Anatoly, ты ещё здесь сидишь?
Воскресенье Февраль 27 2005 13:48, Anatoly Mashanov wrote to George Shepelev:
NS>>>>> Кстати, а что посоветуешь для такой ситуации: домашний NS>>>>> самодельный простой робот, обмен по радиоканалу, длина посылки AM>>>> 1) CRC32. NS>>> Итого удвоение-утроение длины посылки. GS>> М-да, тут напрашивается Хэмминг (без коррекции)... AM> Без разницы, Хэмминг или таки Шмемминг.
Hу да, ну да, математики такие идиоты, решают какие-то задачки, совершенно не нужные для практики...
AM> В _принципе_ неважно, какой контрольный код будет, если он AM> удовлетворяет двум условиям: достаточно малая вероятность имитации при AM> равной длине (1) и достаточно большая длина. Если вероятность пропуска AM> ошибки 1/256 устраивает, то CRC в один байт устроит.
Сравниваем:
"Короткий пакет" 1 байт данных + 2 бита номер пакета + 6 бит контрольные коды Хэмминга итого 2 байта
"Длинный пакет" 2 байта данных + 2 бита номер пакета + 6 бит контрольного кода Хэмминга итого 3 байта
AM> Если устроит 1/64к, то нужно CRC в два байта и так далее.
Hе замечаешь, что у тебя сильно избыточно получается? Hомер пакета девать некуда...
AM> Если робот может заняться деструктивными действиями, получив AM> неправильную команду, набрось еще байт, на всякий случай.
Если робот может заняться деструктивными действиями, то ну его в болото, такого робота ;)
AM> Расскажу байку. Делал я систему охраны на 1446ХК1. В ней есть AM> собственный протокол коррекции ошибок - и именно Хемминг. Результат: AM> Хотя бы раз в день проскакивает ложный пакет с правильным контрольным AM> кодом, и срабатывает тревога от несуществующего датчика. Если бы AM> дивайс был доведен до серийного выпуска, охранники бы сожрали меня с AM> потрохами.
"Как всё запущено!" (c)
В любой системе обнаружения событий есть два критичных параметра: вероятность пропуска события и вероятность ложного обнаружения события. Единственный метод _никогда_ не допускать ложного обнаружения события (вероятность строго равна нулю) - всегда выдавать сигнал "события нет". Математики подтвердят ;) В твоём случае должны быть заданы обе вероятности, твоя задача - их обеспечить. Идеальных решений не будет.
AM> (1): Возьмем простую контрольную сумму. Представим себе две ошибки в AM> старшем разряде. Ошибки есть, а сумма та же :-(
Даю справку. Код Хэмминга имеет кодовое расстояние 3, а посему _обнаруживает_ двойные ошибки. Дополнительный бит чётности даёт возможность _обнаруживать_ тройные ошибки. Всё-таки математики не зря свой хлеб едят...
Георгий