Comments 135
Напомнило идею, когда-то давно пришедшую мне в голову: Идея совершенно бессмысленная с практической точки зрения, но красивая концептуально.
1) Любые данные можно рассматривать как последовательность цифр.
2) Деление с высокой точностью даёт бесконечное количество цифр.
3) Находишь нужную дробь, передаёшь делимое и делитель и всё, ты красавчик. :)))
Мне кажется, что-то подобное приходило всем в голову🤓
Есть теория, что внутри числа Pi есть абсолютно все последовательности цифр. Нужно просто сосчитать это число с достаточной точностью и найти в нем правильное смещение.
Всё так. Даже шуточный проект pifs был во времена пика популярности этого "откровения". Тогда же на хабре выходили статьи[1], [2], в которых провели математический анализ этой идеи и показали, что:
В среднем выигрыша не будет, что количество бит, необходимое для записи номера позиции в пи, где будет ваша информация будет сопоставимо по длине с информацией. В среднем! Т.е. где-то может очень повезти, а где-то не повезти.
Для таких целей пи не самый лучший кандидат, лучше использовать специальную последовательность и показывали ей вывод.
265?
Я точно помню в одной из книг предлагали передавать все знания человечества, закодированные в виде стержня с нанесённой риской. Для получения знаний нужно было очень точно измерить длину отрезков стержня и поделить :)
В той же книге объяснялось почему эта идея провальная.
Арифметическое кодирование
https://ru.wikipedia.org/wiki/%D0%90%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
Так передача информации - это и есть время. Вы можете придумать бесконечное количество замен сигналов на временные интервалы, но все они будут статистически медленнее, чем передача "напрямую".
Вот ваш же пример с трëхсекторным гонгом и секундной стрелкой. Сравните его с системой, когда чай - один удар, кофе - два, массаж - три. На передачу самого длинного сообщения (массаж) уйдëт три секунды. А на ожидание попадания стрелки в нужный сектор часов - в среднем 20 секунд, т.е. вы сделали передачу информации примерно в 7 раз медленнее.
если в реальном здании использовать такую ложко-кастрюльную передачу сигналов, то мой способ будет медленнее, да, но в здании будет не так шумно, чем если стучать за кофе три удара.
То есть, вы по факту пытаетесь оптимизировать мощность передатчика, а не сжать данные.
Только в оптике и скоростных интерфейсах как раз наоборот стараются использовать кодирование с примерно одинаковым количеством нулей и единиц (DC-баланс). И избегают длинных монотонных последовательностей (8b10b, битстаффинг). Иначе порог срабатывания тяжело подстраивать, и разваливается синхронизация.
Пусть у передатчика и приемника(лазерные указки например) будут одинаковые тактовые генераторы.
.. А потом они узнали, как нолики и единицы передаются на физическом уровне.
Т. е. Вы не передаёте два бита вместо числа 15. Вы передаёте два стартовых бита и 15 нулей (или единиц) вместо того, чтобы передать 4 единицы.
На сколько понял, автор статьи изобрел нечто вроде фазовой передачи данных?

А таблицу с данными откуда взять, чтобы считывать? Это изначально одно и то, просто продублированное и размещенное в разные места географически. Правильнее было бы назвать статью как передать команду считать те данные, которые изначально уже загружены. То есть это не передача данных, а активация уже загруженных
Пусть у передатчика и приемника(лазерные указки например) будут одинаковые тактовые генераторы. И соглашение о том, что приемник, получив импульс света, начинает считывать данные в таблице строка за строкой. А получив второй импульс, останавливается и записывает данные текущей строки как полученные.
И в чем разница между "1, пауза 8 тактов, 1" и "1000000001"?
Ни в чём. Автор обнаружил, что 0 можно не передавать явно и сэкономить энергию.
Поздравляю, вы изобрели унарное кодирование.
А теперь автор должен предложить механизм, делающий когерентными тактовые генераторы передатчика и приемника.
Особенно это классно на больших расстояниях со спутниками (привет, Эйнштейн)
слышал что есть запутанные фотоны, и воздействие на один, отражается на другом мгновенно, независимо от расстояния. если их как то привязать к генератору
только об этом воздействии вы сможете судить, только когда свяжете генераторы обычным каналом связи.
Через запутанные частицы вы не сможете передавать информацию.
а вообще если на уровне лазерных указок делать, то это все реально. запускаем передатчики на atmega8 микроконтроллерах (работал с ними). на частоте 1Мгц. измеряем осциллографом задержку между выходным импульсом передатчика, и изменением на тестовой ноге приемника по внешнему прерыванию. и вносим эту корректировку при подсчете тактов счетчика. мне просто некогда сейчас паять это все.
вход в обработку прерывания занимает 4 такта после появления сигнала на ноге прерывания. плюс примерно постоянное время сработки фотодиода и компаратора. я когда то на atmega 8 делал считыватель ключей, писал на ассемблере, и зная что одна команда занимает один такт то есть одну микросекунду на частоте 1Мгц, нормально обрабатывал протокол 1-wire таблетки.
В качестве дурацких идей дарю еще одну, как передавать некий объем информации за "один бит" - управляя амплитудой. 0 вольт - 00, 1 вольт - 01, 2 вольта - 10, 3 вольта - 11.
масштабируй как удобно
О, вы изобрели аналоговый сигнал!
Уже используется совместно с фазовой модуляцией: Amplitude and phase-shift keying - Wikipedia
В качестве дурацких идей дарю еще одну, как передавать некий объем информации за "один бит" - управляя амплитудой.
Вот только это не "один бит", а один бод, он же символ. В котором может быть закодировано сколько угодно битов, хоть 32768 (32768QAM реально используется в ADSL).
Оссподе, и тут наткнулся на этого шиза с двачей
Информация не берется изнеоткуда.
Если ты решишь подобрать два числа или найти отрезок числа пи, соответствующий шифровке, велика вероятность, что длина инструкций по расшифровке (то есть, допустим, номер знака для начала чтения) будет сам по себе намного длинее изначального текста. И смысл тогда что-то сжимать?
На самом деле все выглдяит красиво в описании (любое количество бит за 2), но это всего лишь обман с помощью способа кодирования.
У нас есть передачик и приёминк с сихнронизированным тактовым генератором - значит в нашем кодировании на самом деле не 0 и 1 - 1 бит, а бит информации мы передаём каждый так, а изменение с 0 на 1 - лишь маркер завершения передачи. Сообщение за 10 таков на самом деле не 01 а 00000000001 (где 0 - не изменение бита в канале а 1 - изменение)
Т.е. буквально изобрел фазовую модуляцию
Сильно
Вы придумали модуляцию по времени. Вместо силы/фазы сигнала вы используете задержку между импульсами. Вот только это вообще не эффективно.
Вместо того, чтобы ждать 10 интервалов времени, раз у вас передатчик/приемник итак умеет передавать каждый интервал, можно передать эти самые четыре бита числа 10 за 4 интервала. Да, маленькие числа 1-3 ваш метод передает быстрее, но в среднем тут получается 5.5 интервалов на символ, когда как обычный бинарный код дает 4.
примерно лет 7 назад я придумал архиватор, который кодировал данные всегда на 12.5% в меньшую сторону, то есть фактически можно было любые данные можно было сжать до пары байт. Я стал писать практическую реализацию, но нашёл ошибку, которая неоднозначно кодировала определенные наборы данных. В общем подтвердилось что здоровых людей нет - есть только недолеченные XD
но для разминки мозгов вполне подходит, я в свое время так изобрёл корень квадратный и формулу массы в зависимости от скорости света, в общем на 100 лет опоздал, но было приятно.
Хочу сказать, что идея действительно интересная. По сути вы описываете систему в которой присутствуют 2 источника истины. Ведь каждый из участников системы имеет свой источник времени, а кодирование и декодирование являются функцией времени в этом случае. В таких системах краеугольным камнем, конечно, будет синхронизация источников истины. А существующая практика показывает, что системы с несколькими источниками истины весьма сложны в эксплуатации и вероятность ошибки слишком велика и дорога.
Если попробовать привести эту систему к системе с одним источником истины, то тогда нужно вместе с битом информации передавать смещение времени. Тогда наверное и сам бит передавать не нужно. Фактически смещение времени в этом случае будет являться индексом на определенное слово информации. Это может быть и бит, и байт, и несколько байт. А если оптимизировать запись смещения времени, то она и будет занимать столько же места, сколько занимает изначальная информация. Т.е. получится классическая/существующая передача данных.
Вопрос в том какой вариант выбрать. Ждать N тактов и потом передать завершающий бит или передавать всю последовательность?
Если взять идеальную систему, т.е. исключить издержки технической реализации, то классически за 1 такт можно передать 1 единицу информации, т.е. 1 бит. Если взять вариант с ожиданием времени, то за 1 такт можно "подождать" так же 1 бит. Получается, что при идеальных условиях будет затрачено одинаковое количество времени для обоих вариантов.
Если же выбрать вариант с ожиданием времени, то не нужно передавать ни куда ни какую информацию, в течение всего времени ожидания. Просто сиди и жди. Не нужно тратить мощности коммутаторов, маршрутизаторов, файерволов, которые разделяли бы источник и приемник. Звучит очень заманчиво. Но что, если вам нужно передать огромный объем данных, который должен передаваться, например, сутки. Если случится сбой на последней минуте, например, на приемнике информации, то нужно запускать процесс заново и ждать еще сутки. А вот если такой сбой произошел на классической/существующей модели, то, всего лишь, придется заново отправить недостающие пакеты. И конечное время не будет сильно отличаться от ожидаемого. Хотя для варианта передачи с ожиданием так же можно делить информацию на пакеты.
В общем, теоретически вариант кажется заманчивым, как минимум для того, чтобы разгрузить сетевое оборудование. Но как бы реализация не обошлась дороже.
Есть ли закон природы, который запрещает сжатие произвольного сигнала без потерь (или повышение помехоустойчивости без введения избыточности)? Если посмотреть в оптику, то голограмма обладает свойством делимости, т.е. любой ее самый малый двухмерный фрагмент несет информацию обо всем трехмерном объекте
повышение помехоустойчивости
Вы же сами ответили на вопрос: Будут мешать помехи в виде шума.
но если достаточно использовать часть голограммы, кодируем эту часть помехоустойчивым избыточным кодом так, чтобы длина закодированного слова была не больше исходной, и игнорируем помехи. Самый простой вариант - код Хэмминга устраняет одну ошибку в слове, но требует избыточности в несколько десятков процентов. Так возьмем их за счет сокращения голограммы
Качество картинки падает.
Грубо говоря, у вас было 8 бит на пиксель и разрешение 1000х1000. А когда вы отломали кусок, стало 7 бит и 500х500. Картинка-то в целом осталась, но получилась более грязная и размытая, как при большом сжатии в JPEG.
Сжатие произвольного куска данных без потерь запрещено математикой. Точнее сжатие-то не запрещено) но невозможно восстановление. Вы не сможете задать однозначную функцию, которая по короткой (сжатой) последовательности вернёт длинную (исходную). Потому, что всех возможных вариантов коротких последовательностей (N-1, N-2, N-3... байт) меньше, чем длинных (N байт).
Ну а про помехоустойчивость есть таки теорема Шеннона.
Теорема Шеннона говорит про возможность передачи, предел – про скорость, но про избыточность не упоминается. С голографией так, как вы написали, если передавать сложную картинку. А если передавать голограмму одной светящейся точки, когда информация заложена в координаты точки, а не яркость – качество не имеет значения, лишь бы точку можно выделить. При использовании линейной (одномерной) голограммы длиной 1000 точек передается 10 бит и достаточно иметь 2% голограммы для успешного восстановления (проверено). При использовании 2-мерной голограммы передается информация о 3-мерном объекте с тремя координатами и возможно дальнейшее повышение размерности. Для передачи не обязательно получать голограмму физически, есть математика. А какой раздел математики запрещает сжатие без потерь? Понятие «информация» в математике не используется и вообще, информация субъективна – это мера незнания получателя
Теорема Шеннона говорит про передачу полезной информации. Какое вы при этом используете кодирование или избыточность - без разницы. Поэтому теорема и считается одной из фундаментальных.
А если передавать голограмму одной светящейся точки, когда информация заложена в координаты точки, а не яркость – качество не имеет значения
Точность определения координат пострадает при размытии точки. То есть, количество знаков после запятой. А это и есть полученная информация.
Если качество не важно, значит в изначальной картинке уже была заложена большая избыточность. Если вы на диске держите 100 копий одного файла, то даже по маленькому обломку файл восстановите. Тут никакого волшебства нет.
А какой раздел математики запрещает сжатие без потерь?
Теория множеств скорее всего, и базовые аксиомы. Я при доказательстве не привлекал понятие "информация". Прочитайте внимательнее.
Можно так, пользуясь мат.индукциией и методом "от противного": раз любой сигнал можно сжать, значит можно сжать ещё разик. Потом ещё. И так до одного бита. А из одного бита любой сигнал восстановить как-то не получается. Значит исходное предположение "любой сигнал можно сжать" не верно.
А уже соответствие соответствие аналоговых сигналов и количество информации в них задаётся теоремами Котельникова, Шеннона и Найквиста.
"Теоремы Шеннона для канала с шумами связывают пропускную способность канала передачи информации и существование кода, который возможно использовать для передачи информации по каналу с ошибкой, стремящейся к нулю (при увеличении длины блока)." - Шеннон не говорит про полезную информацию. Он использует слово информация только как количество бит сигнала, которые могут быть искажены. А в теореме Котельникова говорится про точность восстановления функции, независимо от того, переносит она информацию или нет.
Про голографию. Я говорю про голографическое кодирование путем цифрового расчета виртуальной голограммы виртуального оптического объекта (светящейся точки в нужном месте пространства). Значения голограммы округляются до одного бита и передаются по каналу связи. Входное двоичное слово переводится в единичный код, поэтому образуется большая избыточность. Например, для передачи 4 информационных бит приходится передавать 16. Но при стирании 13 бит по оставшимся 3 битам можно восстановить исходные 4. Это проверенный факт, которому я пока не придумал объяснения в рамках существующей теории. Включать критерий Поппера пока не хочу :)) (согласно критерию Поппера научная теория не может быть принципиально неопровержимой)
Например, для передачи 4 информационных бит приходится передавать 16. Но при стирании 13 бит по оставшимся 3 битам можно восстановить исходные 4
Так не бывает. Тогда можно не передавать 13 бит, а передать только 3. И вот вы универсально сжали любые 4 бита в 3. И если вам надо передать все 16 4-битных последовательностей, вы передадите 16 3-битных. Но различных 3-битных только 8, значит какие-то из этих 16-ти совпадут. А значит вы каким-то магическим образом из абсолютно одинаковых 3 бит восстанавливаете разные 4-битные последовательности.
Есть всякие коды восстановления, которые действительно позволяют восстанавливать утерянные биты из-за ошибок, но они не дают сжатия. У вас все-равно оставшихся бит должно быть сильно больше изначальных смысловых.
Скорее всего дело в том, что неявно используется неучтенная информация о типе кодирования, которая известна приемнику, но не передается по каналу. Но это относится ко всем способам передачи - алфавит всегда должен быть известен
да, информации передается больше, потому что имеет значение положение бита в слове
а как посчитать эту информацию в битах?
Нет. Возьмем 16 кодов для всех возможных 4 входных бит. Сотрем в каждом все, кроме 3 бит на одних и тех же местах. Получим идентичные дубли где-то.
В голографическом коде нет. В нем разряды имеют другие веса и по-разному зависят от положения. Три конкретных разряда соответствуют только одному из 16 вариантов
Еще раз, ну вот так нам не повезло, что в каждом из 16 случаев получили те же самые разряды. Плевать какие тут веса, какая хитрая математика голографии и алгоритм расшифровки.
Приемник тупо получает абсолютно идентичный сигнал в нескольких случаях, хотя передатчик пытался передать что-то разное. Вообще никак теоретически невозможно по одному и тому же идентичному сигналу восстановить разные данные.
Код устроен так, что при передаче разных символов идентичных сигналов не будет
Ну вот вы в другой ветке про 100% ошибок пишите. Один код воспринялся без ошибок. А во втором ошибки произошли так, что получился точно такой же сигнал. Даже меньше, чем 100%. Как восстанавливать будете?
сколько информации несет синхросигнал? "Начало шестого сигнала соответствует 12 часам московского времени" - сколько бит передается одним пиком?
Этот пик приносит вам информацию, на сколько миллисекунд из диапазона +-43200 секунд (сутки) ваши часы отличаются от часов ВНИИФТРИ. Чем лучше вы примете сигнал (с лучшим соотношением сигнал/шум), тем точнее определите начало шестого пика, и получите больше знаков после запятой.
А вот если у вас в подвале стоят атомные часы, вы и сами сможете неплохо предсказать этот периодический сигнал. Поэтому никакой новой информации и не получите.
Тут сигнал несет 1 бит информации. Он или есть или его нету. Про часы и шестой сигнал - это заранее переданная и оговоренная информация.
Давайте ваш пример доведем до абсурда. Договоримся что, если в течении 5 секунд нет никакого сигнала, то считаем принятыми все тома войны и мира. Вообще сигнала нет! Мы за 0 бит передали войну и мир! БЕСКОНЕЧНОЕ сжатие.
Ясно же, что не может такого быть?
В двоичном коде нет одинаковых бит, каждый имеет свой вес. Как учитывается номер разряда каждого передаваемого бита? Это же тоже информация
Каждый бит делит множество чисел ровно поплам. Первый говорит, в верхней или нижней половине число, второй - в нижней или верхней четверти, и т.д.
Но суть остается той же. Бит несет, внезапно, один бит информации - позволяет выбрать один из двух вариантов.
Пока он один, да. Но в многоразрядном слове нужно сообщить получателю не только значение каждого бита, но и его координату (номер разряда). Это тоже информация, которую так или иначе надо передать
Нет, это договоренность как интерпритировать этот бит информации. Это старший или младший разряд, или может даже знак числа. Если хотите, эту информацию передали вместе с кодом приемника.
при каждой передаче так или иначе есть стартовое слово - оно определяет, какой из передаваемых битов старший. И стартовое слово несет информацию, причем важнее не количество бит стартового слова, а то, что за ним следует. При передаче одного бита - наличие стартового слова один бит и значит, а при передаче войны и мира одним сообщением - сколько бит?
Учтено в конструкции передатчика и приёмника. Также, как и способ кодирования, сжатия, вид модуляции, среда передачи. Да, это тоже информация, но передаётся она вам один раз, когда вы это железо покупаете)
А синхронизация? Которая определяет, на каком месте стоит каждый бит?
Почему никто никогда не говорит, как и сколько передается информации при синхронизации? Два крайних случая - самосинхронизирующийся код Манчестер и атомные часы у передатчика и приемника.
Информация передаётся, и вполне можно посчитать, сколько.
В теории периодический сигнал синхронизации не несёт информацию - он предсказуемый. Но по факту в нём передаётся текущий разбег тактовых генераторов передатчика и приёмника - как раз их непредсказуемость.
Для пользователя эта информация бесполезна. Она лишь позволяет не ставить в мобильнике атомные часы, грубо говоря. И позволяет мобильнику быть мобильным, кстати, тоже.
Для пользователя бесполезна, а для теории передачи и разработчика канала связи необходима
Ну да, какие-то методы избыточного кодирования сделаны в том числе для передачи синхронизации.
Это проверенный факт
Давайте же проверим этот факт. Ну во ты получили, например, сообщение
0000001000010000
Даже имея информацию, что тут искажён всего один бит, а не 13, вы восстановите исходные данные?
Если это натуральный код, нет. Если это помехоустойчивый код, да. Если это помехоустойчивый голографический код, в нем больше единиц (примерно половина) и информация будет восстановлена даже по трем битам. Более того, голографический код восстанавливает информацию, даже если искажены все биты (слово инвертировано)
Тут я, похоже, перестал понимать, о чём речь. Поясните, что конкретно вы понимаете под "голографическим кодом". Приведите пример такого кода.
Так это просто один из методов расширения спектра. Которые уже давно позволяют, например, GPSу работать при соотношении сигнал/шум хуже, чем минус 20 дБ.
И не удивительно, что при усложнении обработки сигнала авторы алгоритмов всё ближе подходят к тому же пределу Шеннона, с которого начинали.
Не думаю. У произвольного информационного цифрового слова и у закодированного слова вид и спектр один и тот же. Я имею в виду помехоустойчивое кодирование в цифровом канале. Модуляция и спектр нужны при построении канала
У произвольного информационного цифрового слова и у закодированного слова вид и спектр один и тот же
Тогда они идентичны. Это клонирование, а не кодирование)
Просто когда дело касается физической реализации, понятия "кодирование" и "модуляция" иногда смешиваются. Тот же манчестер можно считать и избыточным вдвое кодированием (добавили инверсный бит), и вариантом фазовой модуляции (BPSK). А полезный результат тот же - манипуляции со спектром.
У произвольного информационного цифрового слова и у закодированного слова вид и спектр один и тот же
Если вводим избыточность, то на физическом уровне скорость приходится увеличивать. Поэтому спектр-то как раз и расширяется.
Нет - в цифровом канале увеличивается время передачи (падает скорость). Можно, конечно, для компенсации этого расширить спектр, но это другая история
Смотря с чьей колокольни смотреть)
В документации пишут скорость передачи полезных данных, которая нужна пользователю. Всё остальное его не интересует. Поэтому таки приходится именно расширять спектр, а не обратно закатывать губу пользователю.
В документации (стандарте) LTE пользователю говорят про 300 Мбит/с. Вы когда-нибудь ее видели?
Это максимальная скорость базовой станции по стандарту. То, что она делится между пользователями одной станции - это просто приходится принимать.
В описании к своему мобильнику вы скорее всего увидите более скромную цифру, потому что он не все виды модуляции поддерживает. И эта цифра таки будет достижима в чистом поле рядом с одинокой базовой станцией.
А раз существует метод тестирования, который даёт 300 Мбит/c, то никакого обмана тут нет, просто бизнес)
Я сумел в 6 утра на прямой видимости от базовой станции получить 200 Мбит/с, но за городом, где мне нужна связь, а имею 100 кбит/с в любое время суток. А если бы оператор использовал голографический код с 30-кратной избыточностью, я бы имел скорость в 30 раз меньше, чем 300 Мбит/с, т.е. 10 Мбит/с, а не 100 кбит/с.
Во всех этих помехоустойчивых кодах нет этой вашей магии "закодировали N бит, отгадали меньше N, все N восстановили", которая дает бесконечное сжатие, запрещенное элементарной математикой и принципом голубей. Везде там надо получить и не потерять гораздо больше, чем N бит. Но за счет лишней информации вы можете восстановить N бит из любых N+K, т.е. ошибки могут случиться в любых местах. Но плотность передачи информации там ниже, чем в обычном кодировании.
Самый простой пример - передавать каждый бит по 3 раза. Если в тройке произойдет всего одна ошибка (бит не возможно принять, или он даже инвертировался), вы все-равно изначальный бит восстановите. Но вам тут надо правильно принять хотя бы 2 бита из 3, чтобы восстановить всего 1. Более хитрые коды требуют восстановить n+log(n) бит, чтобы прочитать n. Но они менее помехо устойчивы.
Голографический код позволяет восстановить сигнал при 100% ошибок (искажены все биты - слово инвертировано). Сжатия нет, повышения скорости тоже, но есть результат
Ссылку уже дайте на этот магический код. Можно тогда вообще ничего не пердавать, Приемник может представить, что получил сигнал из всех нулей, в нем колько-то (от 0 до 100%) ошибок, но для всех случаев он магически все восстанавливает сам. Прям пример про войну и мир получается, только телептически принимается нужная книга.
Doi: 10.31772/2712-8970-2024-25-1-33-42
Все понятно.
Там восстановили, например 8 бит по 64 полученным (см. стр 36). Никакой магии.
Увеличение размера голограммы приводит к возрастанию помехоустойчивости. При n = 2^14 = 16394 успешное восстановление информации происходит при длине шумовой после-довательности до 95 % от размера голограммы
Т.е. чтобы восстановить 14 исходных бит, надо получить 5% от 2^14 = 819.2. Более чем в 20 раз больше данных надо, чем передано!
И я понял что вы имели ввиду под позициями. Позиции единиц в раскодированном "голографическом блоке" динной 2^n бит. Но их сначала восстановить надо. А для этого надо получить достаточно большой кусок этого очень-очень длинного куска данных. И потом можно по нему можно воостановить какие-то жалкие n исходных бит информации.
Никакой магии, сжатия никакого нет, обычный помехоустойчивый избыточный код. Передаете в много раз больше данных, чем у вас есть, и большой процент ошибок вам не страшен.
Смотря с какой вероятностью ошибки надо бороться. Можно использовать 4-разрядные входные слова, тогда избыточность будет 4-кратная, можно 8-разрядные - 32-кратная избыточность, но гораздо более высокая помехоустойчивость. А какой другой код может устранить 100% ошибок?
Этот код не исправляет 100% ошибок. Там, например, написано, что для 95% надо в 1170 раз раздуть данные. И оно устойчиво лишь к пределенному виду ошибок: вам надо без ошибок принять 5% данных подряд. Т.е. к полностью случайным ошибкам, где на каждые 20 бит до 19 случайных могут быть инвертированы или утеряны, этот код вообще не устойчив.
Можно добиться любого, сколь угодно близкой к 100% помехоустойчивости, но и размер кода будет увелчиваться до бесконечности.
Например, есть предельно простой код: предать сообщение 1000 раз подряд. Если вы хоть 0.1% данных подряд без ошибки воспримите - вы получите исходное сообщение. Хотите 99.999% устойчивости? Передавайте сообщение 100000 раз.
Да, этот голографический кажется эффективнее. Но принципиально ничего сверхъестественного тут нет.
Нужно учитывать, что 100% ошибок могут быть только детерминированными (все биты разом инвертировались), такое бывает. Другие коды с этим не справляются. Если ошибки случайные, их не может быть больше 50% и к этой цифре можно приближаться сколь угодно близко как к пределу Шеннона. При 32-кратной избыточности устраняются 33% случайных ошибок, для устранения 40% случайных ошибок нужна 100-кратная избыточность. Все по Шеннону
Ну тогда вот вам такой код: Сначала передаем 1 100000 раз, потом сообщение 100000 раз. Если в начале получили 0 сотню тысяч раз, то выдаем инвертированное сообщение. Вот - 100% ошибок исправлено!
А кто ему скажет, когда надо инвертировать, когда нет? Каналы с обратной связью - это другая, гораздо более медленная история
И в канале обратной связи тоже будут ошибки и команда придет противоположная
Ошибки всегда могут быть любые, и случайные и детерминированные в любом сочетании. 100% ошибок - это идеальный случай, как и 0%
Понятие информации в математике используется широко, есть даже раздел, который так и называется - "Теория информации". Ограничения на сжатие без потерь вытекают из теоремы Шеннона для источника без памяти.
Да все проще, оно вытекает из принципа голубей: если у вас N элементов с менее чем N возможными различным значениями, то какие-то из них совпадают. Сжатых файлов меньше чем все возможных насжатых файлов (если у вас всегда сжатие). А значит, какие-то из файлов сжимаются в один и тот же сжатый файл, а значит его не распаковать в оба разных исходных файла.
Когда по трем битам восстанавливаются 4, необходимо учитывать, что эти 3 бита различаются не значениями (они все единичные), а свои местоположением. А значит, необходимо учитывать информацию, передаваемую по каналу синхронизации
Но ни приемник ни передатчик не влияет на то, какие 3 бита из 16 будут приняты. Ошибки случайны и могут произойти в любых местах. Поэтому могут получится 3 одинаковых бита на одинаковых позициях для разных передаваемых данных.
В теореме Шеннона говорится об искажении и потере информации, а не о сжатии
Поправка. При длине одномерной голограммы 1024 точки допустимый процент потерь 99,5
и тут придумывается вместо бита...кубит!)))
А почему бы и нет? :)) Сравним фото объекта и его голограмму с одинаковым количеством пикселей и бит. Голограмма содержит гораздо больше информации, в том числе и о третьем измерении. Кроме того, каждый пиксель и бит голограммы содержит информацию о каждой точке объекта, а не одной, как фото. Значит, каждый бит у голограммы содержит существенно больше информации, чем у фото, и голограмму можно и нужно использовать для сжатия, повышения помехоустойчивости и т.д. Предлагаю назвать бит голограммы "холобит"
Что то все так скептически относятся:D
Вот почему бы и нет? Представим себе очень большой, может быть 3х, 4х или более мерный массив последовательности чисел, своего рода словарь. Не знаю как его составить, и какой у него будет размер, но сейчас мы говорим "не возможно", а через какое-то время это "не возможное" становится возможным. Для упрощения, пусть он будет трехмерный. Нам достаточно будет знать координаты входа, направление и длину строки, т.е. 3+1+1 4 числа. Да, на вычисление данных этой строки уйдёт уйма машинного времени. Да, на нахождение её на стороне приёма так же уйдёт много времени. Но длина передачи будет минимальна. А теперь представьте, что вам нужно передать большой объем данных допустим на Альфа Центавра. Каждый переданный бит потребляет большую мощность, чем их больше, тем больше затраты на передачу. Это есть практическое применение данного хода мысли.
Разве не всем это приходило в голову еще в школе? Это не будет работать, увы. Можно взять словарь для начала двухмерный, простейшую дробь 0,0123456789101112 и так далее. И передавать просто ссылки на куски, но тут мы встретим интересную ситуацию - любая ссылка в этой дроби будет больше, чем число, ее кодирующее. И в этом вся проблема - не подобрать такого датасета и комбинации чисел так, чтобы суммарная длинна ссылок была меньше суммарной длинны кодируемого сообщения гарантировано.
Для передачи 8-разрядного кода словарь должен содержать 256 единиц, например, в виде квадрата 16х16. Передача одного байта требует задания двух 4-разрядных координат, в сумме - 8 разрядов. Где выигрыш?
мой способ может иметь пользу на бытовом уровне. допустим захвачены заложники, к ним допущен переговорщик, у него есть таблица сообщений разбивки минуты на 5 секундные интервалы. то есть 12 возможных сигналов группе захвата. допустим команда снайперу валить это команда с индексом 5. тогда переговорщик трогает нос (старт счетчика) и на 27 секунде трогает нос снова.
чтобы передать 1111 мне нужно передать 16 бит информации
А ещё идеальных тактовых генераторов не существует, поэтому на практике применяется https://ru.m.wikipedia.org/wiki/Манчестерское_кодирование
Зумеры изобрели частотную и фазовую модуляцию?
А вообще при передаче имеет значение не число импульсов передатчика, а время, за которое пердадутся N бит полезной информации.
Получается что есть некий период повторений который имеет кучу вариантов, и если в нужный момент времени дёрнуть сигнал то приемник защелкнет нужную позицию. Если таких вариантов 3... То поидеи за этот же период я бы смог передать сразу 3 бита информации, если бы приемник считывал состояние сигнала три раза за период. И эти три бита дали бы 8 вариантов чисел. Тоесть получаем обычную последовательную шину типа uart(без тактирубщего сигнала).
Хорошо, если же заведомо разбить временной период на 8 частей то в итоге передавая только лишь состояние одного сигнала можно передать уже 256 вариантов чисел, а по аналогии с вашем примером только 8. Невыгодно.
Возможно стоит задуматься а в каких случаях это было бы выгодно в принципе. Допустим хотим передать 3 бита информации, но линия связи не позволяет однозначно поднять сигнал в определенный момент времени, а позволяет лишь плавно(либо другим способом, главное не привычный П-образнвй вид) поднять уровень сигнала в нужной области, и тогда приемник смог бы оценить ситуацию и высчитать к какому диапазону соответствует это колебание. Но мне кажется тут уже ближе к идеи работы трансиверы(высокоскоростных последовательных передатчиков).
Автор похоже путает понятия информации и передачу сигнала. Так-то отсутствие/наличие смены сигнала на протяжении кванта времени - тоже информация. Например банально протокол uart в помощь)
Как передать произвольное количество бит, передав 2 бита