Отправлено кстати 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, но хотелось внести ясность. Для дальнейшего обсуждения, если есть желание, можно прибегнуть к частной переписке.)
- Re (4): Христианский штрих код "888"! Николай п. 12:31:17 05.04.2000 (0)
[Православная беседа] [Начало] [Написать ответ]