[Православная беседа] [Ответы и комментарии] [Написать ответ]
Отправлено кстати 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, но хотелось внести  ясность. Для дальнейшего обсуждения, если есть желание, можно прибегнуть к частной переписке.)
Ответы и комментарии: