По случаю пятницы новый небольшой рассказ. Не стесняйтесь ругать в комментариях, критика очень приветствуется.




Они всегда старались докопаться до сути. С самого рассвета своей цивилизации. От истоков. Это было тем качеством, которое позволило им подняться среди других видов. Изучить, разобраться, воспроизвести, описать. И снова изучить, и весь процесс повторяется. Они начинали с простейших закономерностей. Затем углубились в суть материи, разбирались с частицами и их взаимодействиями. Открыли глаза на окружающий мир и изучили другие миры. Сначала соседние, потом далекие. Докопались до самой сути своего пространства и научились путешествовать в любое место своей бесконечной вселенной. Они досконально разобрались во всех взаимодействиях. Их теории были безупречно полны и достоверны. Они наконец описали всю вселенную, во всем ее многообразии и бесконечности и переложили это на красивый язык математики. Они измерили все состояния и смогли путешествовать в своих теориях не только в пространстве, но и во времени. Они смогли предсказать любое прошлое или будущее состояние вселенной. Они описали ее целиком и полностью. И удивлению их не было предела. Ведь в их безупречной модели совсем не было будущего. Оно как бы не существова...


Он сохранил архив, приложил алгоритм и отправил его своему преподавателю. Наконец можно было отдохнуть и развлечься с друзьями. Задание было нелегким. Надо было написать архиватор для очень сложного бесконечного набора данных, который необходимо сохранить в конечном объеме. К счастью уровень энтропии не был непомерным и у него в итоге получилось внедрить прямо в набор данных такой скрипт, который как бы изучал эти данные изнутри и преобразовывал определенный их фрагмент в их же архив. Хитро, не? Интересно кто еще решил таким же образом.


Женя Белик

Поделиться с друзьями
-->

Комментарии (40)


  1. SystemXFiles
    14.10.2016 13:21

    Хотелось бы больше подробностей.

    Ведь для осуществления такой задумки, надо чтобы был какой-то внешний интерпретатор «для очень сложного бесконечного набора данных» и уместные ребята (в плане интерпретирования, т.е. они должны быть намеренно написаны под интерпретатор) которые «эти данные изнутри преобразовывали».

    Просто вакханалия какая-то получается отчасти. Трудно представить такое.

    По сути это будет какой-то дикий оптимизатор данных, способный свести все эти данные к более простым выражениям, но по прежнему уместных для интерпретатора. Причем оптимизатор будет запущен в том же пространстве данных и он должен быть намеренно создан под такую задачу.

    А мы созданы под такую задачу? Надо подумать.
    Не в плане способности оптимизировать, а в плане «мы созданы вообще или все же мы случайное творение эволюции в рамках законов интерпретатора»?


    1. lavmax
      14.10.2016 13:37
      +1

      Внешний интерпретатор — это собственно приложенный к архиву скрипт. Он же наверное оптимизатор, если я правильно понял что вы имеете ввиду.
      По поводу нас. Возможно этого никто никогда не узнает :)


  1. GreatRash
    14.10.2016 13:23

    «Архиватор для бесконечного набора данных» — смешно. ? ? 1 =?


    1. SystemXFiles
      14.10.2016 13:26
      +3

      А почему нет? Вдруг вся бесконечность сводится к циклу (повторяемые фрагменты)? Тогда можно будет бесконечность описать конечным образом (с некоторой вероятностью — уверенностью).


      1. izzholtik
        14.10.2016 13:52

        Нет, поскольку количество повторяющихся последовательностей будет бесконечно велико и не сможет быть записано конечным числом.


        1. SystemXFiles
          14.10.2016 14:10
          +3

          А такой вариант?
          Вполне себе бесконечная последовательность и записана конечно прямо в комментарии.

          while(true) {
             print("123")
          }
          


          1. tangro
            14.10.2016 17:27

            Не пойдёт, потому что чтобы такое написать — надо быть уверенным, что последовательность именно повторяет одни и те же фрагменты бесконечно, а как же это понять, не считав её полностью, а как же её считать, если она бесконечна.


            1. MichaelBorisov
              14.10.2016 23:31

              Последовательность не может иметь бесконечную энтропию, если ее каким-то образом можно представить в конечном мире. Задача сводится, таким образом, к выяснению способа представить эту последовательность в виде конечного алгоритма, порождающего ее.


              1. tangro
                15.10.2016 18:05

                Вот я Вам представляю в конечном виде круг: О
                Напишите-ка мне алгоритм, выводящий полностью отношение длины его окружности к радиусу.


    1. lavmax
      14.10.2016 13:28

      Поясните свою мысль пожалуйста.


  1. SystemXFiles
    14.10.2016 13:26

    del


  1. isden
    14.10.2016 13:28

    Подождите, насколько я понимаю, из «бесконечного набора данных» никак нельзя получить конечный набор. Иначе — это не бесконечный, а просто очень большой набор данных.


    1. lavmax
      14.10.2016 13:32
      +1

      Вот вам пример. В прямоугольной двумерной системе координат бесконечный набор данных находящийся на линии проходящей через ноль и отклоненной от оси Х на 45 градусов можно сжать до трех символов "X=Y".


    1. Xandrmoro
      14.10.2016 13:33

      Если набор не истинно случайный — описание закономерности может быть сколь угодно сложным, но всё же конечным.


      1. isden
        14.10.2016 13:36

        Т.е., по сути, все сводится к поиску некой функции для описания этих данных? Что-то сдается мне, подобная задача для произвольных данных выглядит как-то не очень решаемой.


        1. lavmax
          14.10.2016 13:42
          +1

          Речь шла не про произвольный набор, а про "очень сложный бесконечный набор данных" с приемлемым уровнем энтропии :)


          1. isden
            14.10.2016 13:44

            А чем они отличаются? :)


            1. lavmax
              14.10.2016 13:48
              +1

              Думаю можно сказать, что "произвольный набор данных" в определении содержит невозможность компрессии. Хотя тут само понятие поизвольности несколько размыто. А, в свою очередь, бесконечный набор данных вполне может сжиматься — вот пример


              1. isden
                14.10.2016 13:55

                Нет, я немного не про это.
                Вот смотрите. Если мы можем подобным образом описать наш набор данных — значит задача решена.
                Но, на вход нам могут поступать _любые_ данные, иначе наш архиватор предназначен только для сжатия, условно говоря, прямых линий и окружностей.
                И даже в этом случае идем далее — если этот набор любых данных бесконечен, нам нужно как-то уметь определять, что мы можем сжать, а что нет. Но как решить эту задачу на бесконечных данных?


                1. lavmax
                  14.10.2016 14:02
                  +1

                  Достаточно научиться путешествовать по всему объему данных :) Например вы легко можете попасть в любую точку на функции x=y и убедиться в работоспособности такого описания функции. Чем сложнее набор данных, тем сложнее задача описания его в математическом виде. Задача трех тел, например, до сих пор не решена в общем случае.


                  1. isden
                    14.10.2016 14:07

                    Ну т.е. в общем случае сабжевая задача не решаема (в данный момент), а в частном случае нам нужно определить этот самый частный случай, что сводит решение проблемы к общему случаю. Я правильно понял? :)


                    1. lavmax
                      14.10.2016 14:42

                      Более того, на данный момент считается, что ее даже теоретически нельзя решить. Но это на данный момент )


                1. Xandrmoro
                  16.10.2016 02:28

                  Задача стояла сжать _конкретную_ последовательность, насколько я понял


            1. SystemXFiles
              14.10.2016 13:50

              видимо тем, что он намеренно сгенерирован и точно не абсолютно случайно


    1. alix_ginger
      16.10.2016 10:55

      Как насчет чисел Фибоначчи? Набор данных бесконечен, но описать его можно одной строкой. Я так понял, в рассказе описывается что-то похожее, хоть и значительно сложнее


      1. isden
        16.10.2016 11:11

        Смотрите тред далее.
        Если мы абсолютно точно уверены, что данная последовательность подчиняется какой-то закономерности — то тут вопросов нет. Вся фишка тут в том, чтобы определить, есть ли закономерность в бесконечном наборе данных.


  1. AlexanderS
    14.10.2016 13:51
    +1

    Задание было нелегким. Надо было написать архиватор для очень сложного бесконечного набора данных, который необходимо сохранить в конечном объеме.

    Если набор данных — это псевдослучайная последовательность, то выполнив свёртку можно представить её в виде вполне себе конечного объёма полинома для генерации М последовательности. Подозреваю, что ученик исследовал отклики от прогона данных через корелляторы =)


    1. lavmax
      14.10.2016 14:05
      +2

      Вопрос еще в том, что само определение случайности/псевдослучайности фактически лежит в области можем мы сжать это или нет. Если можем — это псевдослучайный набор, если нет — случайный. Для нас, здесь и сейчас. Имхо любой случайный набор данных имеет вероятность стать в будущем псевдослучайным.


      1. AlexanderS
        14.10.2016 14:16
        +1

        В принципе, справедливо и обратное — набор считающийся псевдослучайным на какой-то итерации может стать случайным, когда «заработает» какой-то коэффициент полинома. Т.е. если реализовать длинный-предлинный сдвиговый регистр ПСП с небольшим количеством обратных связей для большущего полинома, то какой-то коэффициент свой вклад может начинать вносить спустя большое время после запуска процесса.


        1. MichaelBorisov
          14.10.2016 23:34

          Но от этого последовательность не станет истинно случайной. Просто выяснится, что у нее более длинный период повторения и задающий полином.


      1. Rasheverak
        15.10.2016 11:18

        А разве можно 10ю цифрами написать абсолютно, т.е. даже участками, неповторяющуюся бесеонечную последовательность?
        Самое простое, мне кажется, все четные обозначить как А а нечетные как Б-и сразу появяться закономерности и последовательности, а потом разобраться ниже уровнями…
        Извините если протупил, я не метематик вовсе…


        1. lavmax
          15.10.2016 11:24

          Думаю, что дело в том, что повторение "участками" не считается. Если вы взяли 10 цифр, то как минимум эти 10 цифр будут постоянно повторяться. А можно ли из этого сделать случайную бесконечную последовательность? Вот, пожалуйста 3,14159265… и т.д.


          1. Rasheverak
            15.10.2016 14:50

            Вот! это то, что я не могу понять --учасками повторение не считается, а бесконечность мы не можем посчитать по определению… вы тут логического несоответствия не видите?:-)
            А по поводу пи, имхо-если из десятичной системы массив перевести в бинарную и рассмотреть просто как массив нулей и единиц, мне думается там участками будет достаточно закономерностей, а уж как частные закономерности экстраполировать на бесконечность не знаю, думаю что нельзя будет предсказать конкретное число, но можно будет достаточно точно(с определенной вероятностью) описать некий выделенный участок.понятно, что никакого практического смысла в этом нет, но его и глупо искать (имхо) когда речь идет о бесконечности… как говорилось в одном произведении:«бесконечное познание требует бесконечного времени, а потому работай или нет результат одинаков» :-)


            1. lavmax
              15.10.2016 21:00

              Может я не до конца вас понял, но нет, я не вижу тут противоречия. Бесконечное познание требует бесконечного времени, но познание некоторых бесконечностей не требует бесконечного познания и вполне делается за конечное время.


  1. demoth
    14.10.2016 16:43
    +1

    В общем-то это уже реализовано. См. RarVM. :)


  1. Doverchiviy_kot
    14.10.2016 20:18
    +1

    Тут нужен архиватор Бабушкина который превратит бесконечное количество данных в пару килобайт.


  1. smxfem
    14.10.2016 20:19
    +1

    что-то знают об архивации создатели .kkrigger и .debris


    1. WST
      14.10.2016 23:54

      Fix: .kkrieger. Ну и да, упаковщик у них назывался .kkrunchy, а то, что привели вы, — игра и демка.


  1. Dum_spiro_spero
    15.10.2016 00:18
    +1

    На правах литературного критика. )))
    Двухчастная форма — это хорошо.
    1. Второй абзац хотелось бы более подробным — а то много осталось за кадром. Собственно связь обитателей мира и программиста. Читатель догадывается… но… как-то непонятно.
    2. Не надо использовать «как бы». Это означает «я не могу найти точную фразу, поэтому пусть читатель придумает её за меня».
    Ждем еще!!!


    1. lavmax
      15.10.2016 11:29
      +1

      Большое спасибо за комментарий и критику. По поводу "как-бы", тут оно означает что-то вроде "на самом деле все сильно сложнее, но вы можете представить себе, что скрипт как-бы изучает данные изнутри". Если этого эффекта не получилось, то я бы тоже с удовольствием от него избавился. Есть идеи чем его заменить?
      По поводу "за кадром". Хм… В общем то так и задумывалось :) Собственно связь обитателей мира и программиста и надо додумать. Иначе вся интрига потеряется :)