Re (3): Христианский штрих код — "888"!


[Православная беседа] [Ответы и комментарии] [Написать ответ]


Отправлено кстати 11:17:47 05/04/2000
в ответ на: Re (2): Христианский штрих код   "888"!, отправлено Николай п. 11:57:45 03/04/2000
 
.Доброе утро!
 
 
>>> 0 0001101 0100111 1110010
 
>>> 1 0011001 0110011 1100110
 
>>> 2 0010011 0011011 1101100
 
>>> 3 0111101 0100001 1000010
 
>>> 4 0100011 0011101 1011100
 
>>> 5 0110001 0111001 1001110
 
>>> 6 0101111 0000101 1010000
 
>>> 7 0111011 0010001 1000100
 
>>> 8 0101011 0010101 1010100
 
>>> 9 0001011 0010111 1110100
 
>
 
>> A Vashe predlozhenije etomu kriteriju ne udovletvorjajet
 
>> (sobstvenno, v njom kod dlja cifry 8 soderzhit slishkom
 
>> mnogo odnocvetnyx polosok — 6 vmesto 4.
 
>
 
> Уважаемый Кстати :-), а что значит "слишком много"?
 
> По-моему, код для цифры 8 (если я правильно понял — все
 
> глаза "сломал" на этой латинице, к тому же некоторые Ваши
 
> предложения содержат ошибки) указанным Вами условиям
 
> вполне удовлетворяет: начинается и кончается с тех же
 
> цифр, что и другие коды в данном столбце, и "0101011", в
 
> негативе "1010100", прочитанное задом наперед — "0010101"
 
> НЕ ЯВЛЯЕТСЯ каким-либо из A-кодов...
 
 
Условие про 4 полоски было упомянуто самым первым: "в коде
 
EAN сделано так, что одна цифра — это ровно четыре такие
 
полоски". Если оно соблюдается, то возникает очень полезное
 
для проверки правильности считывания кода свойство: в любом
 
коде число полосок одно и то же: 2 + 12 + 2 + 12 + 2 черных
 
(и на одну меньше белых). И ясно, какие полоски к какой
 
цифре относятся.
 
 
То есть ПОЛНЫЙ НАБОР УСЛОВИЙ на части A и B такой:
 
 
1) коды должны быть из 7 цифр 0 и 1;
 
 
2) устроенные так: нули-единицы-нули-единицы;
 
 
3) в кодах A должно быть нечетное число единиц, а в части B
 
- четное;
 
 
4) для одной и той же цифры коды A и B должны получаться
 
друг из друга прочтением "задом наперед" с заменой нулей на
 
единицы и единиц на нули.
 
 
При соблюдении этих 4 условий таблица типа EAN — единственно
 
возможная, свобода выбора заключается лишь в соотнесении 10
 
ее строк тем или иным цифрам. Из каких соображений в EAN
 
выбрали данный конкретный порядок, неясно. Если этот выбор
 
был случайным, то вероятность сопоставить цифре 6 строчку
 
с сочетанием из двух тонких полосок (101 с нулями вокруг)
 
была равна 1/10.
 
 
А Ваш подсчет вероятности я, честно говоря, не вполне
 
понял. Прежде всего, откуда взялось "двоичное число 11111",
 
которое, конечно, есть 31 в десятичной системе?
 
 
Далее, Вы пишете:
 
 
> Какова вероятность выбрать две разделительные полоски
 
> вместо одной или вообще ни одной? По законам логики
 
> вероятнее было бы выбрать одну полоску, а гораздо менее
 
> вероятно выбрать две полоски.
 
>
 
> То есть, здесь можно оценить вероятность выбора двух
 
> полосок, скажем, вплоть до 1/10. Точно, конечно, так
 
> сказать непросто, но я думаю, число 1/10 было бы объективно.
 
 
Зачем нужны разделительные полоски? Скорее всего, они служат
 
для настройки сканера (ведь его двигают с заранее неизвестной
 
и не обязательно постоянной скоростью). При наличии
 
нескольких полосок эта скорость движения вычисляется по
 
частоте чередования черных и белых сигналов , а три
 
контрольные зоны (по краям и в центре) позволяют забраковать
 
считывание, если скорость была слишком непостоянной. Одна
 
полоска в качестве такой настройки, по-видимому, слишком
 
ненадежна (чтобы при измерении скорости не зависеть от
 
освещенности и от "жирности" печати, надо измерять интервал
 
от начала одной черной полоски до начала следующей; для
 
контроля это лучше проделать дважды). Поэтому выбор был
 
разве что в том, взять две полоски или же 3, 4 или больше.
 
 
> Далее — чему равна вероятность случайного соответствия
 
> между шестеркой и линиями? Оно или есть, или его нет. То
 
> есть, набегает еще 1/2.
 
 
"Чему равна вероятность того, что Вы — Папа Римский? Это
 
случайное соответствие или есть, или его нет. То есть
 
набегает 1/2." ;-)
 
 
А на самом деле так: если
 
 
а) для записи цифр использована система с условиями 1)-4);
 
 
б) в качестве разделителя выбраны две полоски,
 
 
то ОБЯЗАТЕЛЬНО одна (и только одна) цифра окажется похожей
 
на разделитель (что мы и видим в реальности с шестеркой).
 
Вопрос только в том, какая это будет цифра. Отсюда и то
 
самое число 1/10.
 
 
> Далее — еще 1/3 набегает из-за числа разрядов — шестерок
 
> три, а не одна!
 
 
????? Чтобы для разных разделителей получилось по-разному,
 
надо было делать их из разного числа полосок: то две, то три
 
или четыре. Как раз это было бы менее логично. А потому,
 
если
 
 
в) разделителей именно три и
 
 
г) все они одинаковые,
 
 
то С ТОЙ ЖЕ САМОЙ вероятностью 1/10 по этим трем
 
разделителям будет угадываться число 666!
 
 
> Перемножим все вероятности, что получится?
 
> (1/15)*(1/5)*(1/2)*(1/3)= 1/450 = 0.00222
 
 
А на самом деле надо 1/10 умножить на вероятности
 
событий а), б), в) и г); эти вероятности оценить
 
довольно сложно, но, по-видимому, каждый раз
 
выбиралась самая простая система из обеспечивающих
 
достаточно надежное считывание кода.
 
 
(Еще раз прошу прощения за offtopic, но хотелось внести
 
ясность. Для дальнейшего обсуждения, если есть желание,
 
можно прибегнуть к частной переписке.)


Ответы и комментарии:


[Православная беседа] [Начало] [Написать ответ]