« Отговор #62 -: Jun 19, 2015, 10:50 »
Правилно! Записването на почти което и да е число като база и степен, заема по-малко памет, отколкото записа на самото число. Това е така дори за сравнително малки числа, като например 36. Което се представя двоично със 100100. Ако е със база и степен 110 10. Бит по-малко. Това е и идеята по-общо.
Употребата на прости числа се налага от самосебе си, но аз не мога да го обясня, така, че да ми допадне обяснението на мен самия, въпреки, че разбираз причината. Нямам знанията и езика за това.
Та ето какво се случва:
Текста просто се закодира като бази и степени.
Първо се взима текста и се определя честотата на срещаните вътре символи, за да може да се облекчат в последствие сметките.
Например името Бойко Борисов. Според честотата на срещане, се подреждат символите и в този ред.
'оБйкрв ис'
Всеки знак по своя ред в оригиналния текст се изразява като поредното просто число в редицата на всичките прости числа. Разбира се трябват ни само толкова, колкото е дължината на текста. Започва се от 2, 3, 5 и т.н.
Позицията на всеки знак от посланието, във подредения по честотата на срещане запис, се определя от степента.
Така буквата `o` като най-често срещана в случая, ще се представи като степен 1. Буквата `Б` ще се представя като степен 2. В предния си пост казах, че ще има и степен 0. Това нормално в един текст ще бъде интервалът, защото се среща най-често.
И Бойко Борисов се представя вече като бази и степени.
2^2х3^1х5^3х7^5х11^1х13^8х17^2х19^1х23^6х29^9х31=10х37^1х41^7
Дано някъде не съм сбъркал. Бях пропуснал в двишение знаците след интервала, та ги добавих. Но така стана и по-прегледно.
Полученото число е
15755314003698233343822284213372425367950000178844077447600722128478500L
И вече това число може да се представи самото то като база и степен, ако има точен корен. Ако няма, може да се представи като сбор от бази и степени.
При няколко страници текст или няколко мегабайта текст, целия вход може да се представи като сбор от бази и степени на половин ред тект, може би и по-малко. Ако имаме късмет да има точен корен, ще се представи просто като база, степен и това ще бъде всичко. Няколко, петнайситена или нека са тридесет напримен символа, за сметка на няколко мегабайта.
Това е целта. Проблема явно не е в кодирането, то е лесната част. Пуснах на мойта машинка 2 на степен 10 000 000 и го осметна за 57 и нещо секунди, като вероятно е ползвано само едното ядро. Цялото число като размер памет зае 3МВ. Това точно число, трябва да се представи така.
ххххх^nnnn + xxx^nnnnnn + nn^n + xxx^nn - 76
Например. Като запис е с нищожен размер.
По този начин може да се запише всичко. Ако са големи файлове, особено такива в които няма печатни символи, може би резулатта от кодирането ще е особено голямо число, което може и да не си представя. Но то също може да се представи по този начин.
Целия интернет, като обем информация, на теория може да се събере така на няколко реда или страница. Затова в предни постове споменах за Народната библиотека на две дискети. Не мога да пиша засега повече, че помагам на един приятел да се изнесе от апартамента.