реклама на сайте
подробности

 
 
> Алгоритм поиска кодовых слов., Кодовые слова с заданным расстоянием Хемминга.
JohnKorsh
сообщение Jan 21 2014, 07:18
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 6-01-05
Из: Россия, Москва
Пользователь №: 1 820



Добрый день! Не подскажет ли кто алгоритм поиска кодовых слов с расстоянием Хемминга не менее заданного?
Прямой перебор (счётчик от 0 и до бесконечности) работает, но занимает много времени - с ростом числа слов время поиска возрастает по экспоненте.
И ещё. Есть ли формула, определяющее максимально возможное количество слов кода с заданным расстоянием Хемминга по расстоянию Хемминга [бит] и максимально допустимой длине кода [бит]?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Fat Robot
сообщение Jan 22 2014, 12:55
Сообщение #2


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



А почему по экспоненте?
(n*n-n), по-моему, сложность простого перебора (n - размер ансамбля).

Цитата(JohnKorsh @ Jan 21 2014, 08:18) *
время поиска возрастает по экспоненте.

Go to the top of the page
 
+Quote Post
JohnKorsh
сообщение Jan 22 2014, 17:23
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 6-01-05
Из: Россия, Москва
Пользователь №: 1 820



Добрый день! Наверное, Вы правы. Я написал чисто по ощущениям. Приходится, к тому же сравнивать на допустимое расстояние Хемминга текущее значение счётчика с постоянно растущим количеством найденных слов. А по сути ничего не посоветуете?
Go to the top of the page
 
+Quote Post
JohnKorsh
сообщение Feb 8 2014, 09:21
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 6-01-05
Из: Россия, Москва
Пользователь №: 1 820



Добрый день! По прежнему ищу. Перерыл Интернет - форумы по теории кодирования - студенческие, им бы самим помочь. Может кто посоветует ссылку? Ещё раз чего я ищу. Система связи с ограниченным алфавитом. Использование алгоритмов исправления ошибок типа Рида-Соломона в данном случае не очень удобно - много вычислений, микроконтроллеру "тяжело". Проще сравнивать принятые слова со списком и смотреть, какое слово "ближе". Для этого эти слова нужно подобрать. Железок много, поэтому, в каждой - свой набор слов. Длина кода - порядка сотен бит. Используемое по допустимой вероятности ошибки Хеммингово расстояние порядка 25 и более бит. Прямой перебор неимоверно долг. Сейчас на сервере круглосуточно "трудится" программа - по три-четыре слова в день. Уверен, что существует алгоритм поиска слов длиной N с заранее заданным Хеминговым расстоянием d. Изучение найденных слов привело к таким выводам - если их записывать в двоичном коде, то все слова одинаковой длины (имеется ввиду, что впереди идут 0, дополняющий до заданной длины N) образуют группу. То есть, получив первое слово следующее получается добавлением d, затем, сложением двух получившихся слов и так до того, как исчерпаются все слова этой длины. (Под сложением я имею ввиду порязрядную операцию XOR). А дальше требуется добавить старший разряд. Не могу понять из списка слов как это происходит. Иногда добавляется d двоичных разрядов, иногда меньше, иногда больше. А найти решение надо - сразу резко упадёт потребление системы - не надо вычислять локатор ошибок и прочие ресурсоёмкие вещи. Даже на кафедры математики разных вузов писал, ну, понятно, что вежливо послали.
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 11 2014, 13:26
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(JohnKorsh @ Feb 8 2014, 13:21) *
Добрый день! По прежнему ищу. Перерыл Интернет - форумы по теории кодирования - студенческие, им бы самим помочь. Может кто посоветует ссылку? Ещё раз чего я ищу. Система связи с ограниченным алфавитом. Использование алгоритмов исправления ошибок типа Рида-Соломона в данном случае не очень удобно - много вычислений, микроконтроллеру "тяжело". Проще сравнивать принятые слова со списком и смотреть, какое слово "ближе". Для этого эти слова нужно подобрать. Железок много, поэтому, в каждой - свой набор слов. Длина кода - порядка сотен бит. Используемое по допустимой вероятности ошибки Хеммингово расстояние порядка 25 и более бит. Прямой перебор неимоверно долг. Сейчас на сервере круглосуточно "трудится" программа - по три-четыре слова в день. Уверен, что существует алгоритм поиска слов длиной N с заранее заданным Хеминговым расстоянием d. Изучение найденных слов привело к таким выводам - если их записывать в двоичном коде, то все слова одинаковой длины (имеется ввиду, что впереди идут 0, дополняющий до заданной длины N) образуют группу. То есть, получив первое слово следующее получается добавлением d, затем, сложением двух получившихся слов и так до того, как исчерпаются все слова этой длины. (Под сложением я имею ввиду порязрядную операцию XOR). А дальше требуется добавить старший разряд. Не могу понять из списка слов как это происходит. Иногда добавляется d двоичных разрядов, иногда меньше, иногда больше. А найти решение надо - сразу резко упадёт потребление системы - не надо вычислять локатор ошибок и прочие ресурсоёмкие вещи. Даже на кафедры математики разных вузов писал, ну, понятно, что вежливо послали.


Вы, похоже, пытаетесь решить задачу, которая давно решена.
Поиск на множестве 2^n кодовых слов отстоящих на расстояние не менее заданного (dmin) эквивалентно построению кода исправляющего ошибки с корректирующей способностью t = floor( (dmin-1)/2 ). Максимальное число кодовых слов кода определяется границей хэмминга.
Существует большое количество кодов, которые вам подойдут. Например БЧХ код (127,43) имеет dmin=29. Не хватит 43-х бит для алфавита и адресации устройств - можно взять код круче. Короче говоря, ваша проблема не совсем понятна.

Go to the top of the page
 
+Quote Post
JohnKorsh
сообщение Feb 12 2014, 17:36
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 6-01-05
Из: Россия, Москва
Пользователь №: 1 820



Добрый день! bbq, спасибо за идею. Просто и изящно. Серьёзные алгоритмы, конечное использовать можно, но железо - микроконтроллер, питание надо очень сильно экономить, а серьёзный алгоритм требует много вычислений, то есть потребляет. Поэтому использую сравнение, благо, алфавит ограничен.

thermit, спасибо за границу Хемминга. Чувствовал, что это давным-давно найдено и снова забыто такими, как я.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 06:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016