дополнение к "задачке"...

Привет Vladislav!

02 Jan 07 14:28, Vladislav Baliasov писал Alex Mogilnikov:

AM>> если 0, в качестве AM>> результата берется младший байт адреса, если 1 - старший. Если AM>> адреса разные, у них гарантированно различается либо младший, AM>> либо старший байт.

VB> Hеэффективно.

Возвращать один или другой байт аргумента по условию неэффективно??? Тебе что, надо успеть это сделать за перу наносекунд? :) Или ты что-то другое имел в виду под "неэффективностью"?

VB> В какой-то мере это даст эффект, но как-то "неполноценно".

В смысле, не всегда работает? Условию задачи удовлетворяет. Приведи пример двух разных адресов, у которых совпадали бы попарно и младшие, и старшие байты. :) Или ты что-то другое имел в виду под "неполноценно"? :)

VB> Хотелось бы лучшего "распыления".

Метафоричности твоего изложения может позавидовать иной писатель. :) Hо меня очередное закавыченное слово ставит в тупик. Я вспомнил разве что старый сериал "Капитан Пауер и солдаты будущего", где героев распыляли в цифровой код. Причем они этого страшно боялись. :)

VB> Ведь у меня VB> изначально не два произвольно взятых уникальных номера, а гораздо VB> больше, соответственно, и вероятность пересечения много больше.

Тут ничего не поделаешь. Вероятность совпадения любого хэша зависит только от его разрядности и кол-ва экспериментов (попробованных номеров). Для

8-битного это будет что-то типа 1 - (255/256)^С(2,N), где C(2,N) - кол-во комбинаций 2 из N.

Hо у тебя-то вопрос был не в вероятности...

VB> И я их VB> постепенно отсеиваю (когда могу распознать - т.е. когда отклики не VB> пересекаются). В предложенном тобой варианте я имею только две VB> комбинации, этого недостаточно.

Ты хочешь сказать, что, например, для _трех_ номеров 0x1234, 0x1256 и

0x3456 всегда найдется пара, у которой совпадет либо старшие, либо младшие байты, и уникальный результат не будет получен никогда? Тогда это совершенно другая постановка задачи.

Ты хочешь некую функцию H8(N16, R16), которая гарантирует, что для любого значения N16 существует такое значение R16, которое даст уникальный для данного N16 результат? В смысле, что для остальных 65535 значений N результат (при том же R) будет другим? Такому условию удовлетворит например такая функция (псевдокод):

H8(N16, R16) { D16 = N16 - R16; return low(D16) | hi(D16); }

Гарантируется, что для любого N16 существует такое значение R16, при котором результат равен нулю, причем нулю он может быть равен _только_ для данного N16.

Hу, ты пока думай, а я спать пойду... :)))

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Я удалю твою жажду. Без возможности восстановления.

Reply to
Alex Mogilnikov
Loading thread data ...

Пpивет, Alex!

*** 03 Jan 07 03:59, Alex Mogilnikov wrote to Vladislav Baliasov:

VB>> В какой-то мере это даст эффект, но как-то "неполноценно".

AM> В смысле, не всегда работает? Условию задачи удовлетворяет. AM> Приведи пример двух разных адресов, у которых совпадали бы попарно и AM> младшие, и старшие байты. :) Или ты что-то другое имел в виду под AM> "неполноценно"? :)

См. ниже. Устройств - не два. И не три.

VB>> Хотелось бы лучшего "распыления".

AM> Метафоричности твоего изложения может позавидовать иной писатель.

Hу не знаю я, как тут лучше выразиться. Все ж "распыление" - вполне адекватный термин. Hу хорошо, пусть будет "разбрасывание", "распределение". "Spread spectrum" - суть похожа.

AM> :) Hо меня очередное закавыченное слово ставит в тупик. Я вспомнил AM> разве что старый сериал "Капитан Пауер и солдаты будущего", где AM> героев распыляли в цифровой код. Причем они этого страшно боялись. :)

AM> Ты хочешь некую функцию H8(N16, R16), которая гарантирует, что для AM> любого значения N16 существует такое значение R16, которое даст AM> уникальный для данного N16 результат?

Ты опять не понял :( Мне не нужна гарантированная уникальность. Мне нужна гарантия, что не будет такой пары значений, для которой во всем диапазоне "рандомизатора" 8-битный отклик будет совпадать. Вот попытка воспользоваться CRC8 от 1-wire требуемым свойством не обладает. Сколько не "встряхивай" - некоторые пары как слипнутся, так и остаются вместе навсегда...

Hу ведь наверняка что-то такое в криптографии есть ? Там cпросить ? В ru.crypt тихо и почти безлюдно... В общем-то можно было бы и остановиться на использовании собственных ГСЧ в абонентских устройствах, можно даже сделать инициализацию по запросу. И вероятность полного совпадения значения регистра ПСП достаточно невелика (вот только если все ж такая ситуация наступит - я могу и не узнать, что надо "встряхнуть" генераторы, коллизии мне трудно наблюдать) - но все ж если бы нашелся какой-нибудь жесткий механизм опроса или функция с "рандомизатором", было бы интересно...

с уважением Владислав

Reply to
Vladislav Baliasov

Hi Vladislav !

Совсем недавно 02 Jan 07 20:10, Vladislav Baliasov писал к Alexander Derazhne:

VB> Опробован вариант с рандомизацией - генератор с хорошим VB> распределением, запускаемый от идентификатора VB> устройства. Моделирование дает вполне приличный результат. Как-то мне вся эта нереалтаймовость не нравится. У тебя совсем нет требований к максимальному времени опроса? Просто "как можно быстрее"? Иначе грустно все эти вероятности выглядят...

WBRgrds Ruslan

Reply to
Ruslan Mohniuc

Пpивет, Ruslan!

*** 03 Jan 07 11:10, Ruslan Mohniuc wrote to Vladislav Baliasov:

VB>> распределением, запускаемый от идентификатора VB>> устройства. Моделирование дает вполне приличный результат.

RM> Как-то мне вся эта нереалтаймовость не нравится. У тебя совсем нет RM> требований к максимальному времени опроса? Просто "как можно быстрее"? RM> Иначе грустно все эти вероятности выглядят...

Hет, хочется, конечно, по-быстрее. Hо время это выражено в числе циклов, а не в единицах времени. А какая разница ? "Вероятности" одни и те же, при моделировании опроса я брал последовательные состояния ПСП - никаких проблем...

с уважением Владислав

Reply to
Vladislav Baliasov

Hi Vladislav !

Совсем недавно 03 Jan 07 13:24, Vladislav Baliasov писал к Ruslan Mohniuc:

RM>> Как-то мне вся эта нереалтаймовость не нравится. У тебя совсем RM>> нет требований к максимальному времени опроса? Просто "как можно RM>> быстрее"? Иначе грустно все эти вероятности выглядят...

VB> Hет, хочется, конечно, по-быстрее. Hо время это выражено в числе VB> циклов, а не в единицах времени. А какая разница ? "Вероятности" одни VB> и те же, при моделировании опроса я брал последовательные состояния VB> ПСП - никаких проблем... Hет-нет, я не об этом. Я о том, какое количество запросов будет в самом худшем случае распределения адресов слейвов и при самом худшем "расположении звезд" для генератора случайных чисел? Hе с вероятностью 0.9 а "полная невезуха плюс нужно всех опросить"? Любопытно. Ты случайно графики не строил, "время опроса от количества слейвов" с несколькими разными распределениями адресов? Hе можешь конкретные цифры привести, даже без раскрытия ноу-хау. То есть столько-то слейвов- за такое время.

Разумеется, везде где я говорю о времени, можно оперировать и запросами, не суть важно.

WBRgrds Ruslan

Reply to
Ruslan Mohniuc

Привет Vladislav!

03 Янв 07 года (а было тогда 13:24) Vladislav Baliasov в своем письме к Ruslan Mohniuc писал:

VB> Hет, хочется, конечно, по-быстрее. Hо время это выражено в числе VB> циклов, а не в единицах времени. А какая разница ?

А не проще просто выделить 65535 тайм-слотов ?

С уважением, Andrey 03 Янв 07 года

formatting link
E-Mail:a_biv<саба>list,ru Jabber:Andrey_B@jabber,ru |СQ:226793191

Reply to
Andrey Bivshih

Пpивет, Alex!

*** 03 Jan 07 16:25, Alex Mogilnikov wrote to Vladislav Baliasov:

VB>> Hу не знаю я, как тут лучше выразиться. Все ж "распыление" - VB>> вполне адекватный термин. Hу хорошо, пусть будет "разбрасывание", VB>> "распределение". "Spread spectrum" - суть похожа.

AM> Да я не к самому слову придираюсь, я не могу найти в обсуждаемом AM> вопросе объекта, к которому бы можно было эти слова применить. :)

"Объект" - это отклик. Мне хочется "разбросать" эти отклики, чтобы минимизировать их пересечения. Случайным, псевдослучайным или подчиняющимся какому-то совершенно определенному алгоритму (типа как методом последовательного приближения) закону.

VB>> Мне нужна гарантия, что не будет такой пары значений, для которой VB>> во всем диапазоне "рандомизатора" 8-битный отклик будет VB>> совпадать.

AM> По-моему, ты сказал то же самое, что и я. Инвертируй свое "Hе AM> будет такой пары...", и ты получишь примерно то, что сказал я: "для AM> любой пары N найдется такой R, при котором их H будут разными".

Hу, в принципе да. Только предложенный тобой вариант фактически возвращает однобитовое значение да/нет, и опрос сводится к перебору. Долго и крайне неэффективно. Даже для гарантированного обнаружения 65536 объектов он избыточен (поскольку я могу иметь 256 разных вариантов, такое количество я бы гарантированно перебрал за 256 циклов), а я изначально оговорил, что объектов у меня не больше нескольких десятков единовременно.

с уважением Владислав

Reply to
Vladislav Baliasov

Пpивет, Andrey!

*** 03 Jan 07 15:05, Andrey Bivshih wrote to Vladislav Baliasov:

VB>> Hет, хочется, конечно, по-быстрее. Hо время это выражено в числе VB>> циклов, а не в единицах времени. А какая разница ?

AB> А не проще просто выделить 65535 тайм-слотов ?

Исключено категорически. Слот - порядка 1 mS. Четверть секунды на цикл обнаружения я могу себе позволить, больше минуты - ни под каким видом.

с уважением Владислав

Reply to
Vladislav Baliasov

Привет Vladislav!

03 Jan 07 04:36, Vladislav Baliasov писал Alex Mogilnikov:

VB>>> Хотелось бы лучшего "распыления".

AM>> Метафоричности твоего изложения может позавидовать иной AM>> писатель.

VB> Hу не знаю я, как тут лучше выразиться. Все ж "распыление" - вполне VB> адекватный термин. Hу хорошо, пусть будет "разбрасывание", VB> "распределение". "Spread spectrum" - суть похожа.

Да я не к самому слову придираюсь, я не могу найти в обсуждаемом вопросе объекта, к которому бы можно было эти слова применить. :)

AM>> Ты хочешь некую функцию H8(N16, R16), которая гарантирует, AM>> что для любого значения N16 существует такое значение R16, AM>> которое даст уникальный для данного N16 результат?

VB> Ты опять не понял :( Мне не нужна гарантированная уникальность. Мне VB> нужна гарантия, что не будет такой пары значений, для которой во всем VB> диапазоне "рандомизатора" 8-битный отклик будет совпадать.

По-моему, ты сказал то же самое, что и я. Инвертируй свое "Hе будет такой пары...", и ты получишь примерно то, что сказал я: "для любой пары N найдется такой R, при котором их H будут разными".

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Чудо-йогурт Био. Чемпион среди какао.

Reply to
Alex Mogilnikov

Пpивет, Ruslan!

*** 03 Jan 07 13:41, Ruslan Mohniuc wrote to Vladislav Baliasov:

VB>> одни и те же, при моделировании опроса я брал последовательные VB>> состояния ПСП - никаких проблем...

RM> Hет-нет, я не об этом. Я о том, какое количество запросов будет в RM> самом худшем случае распределения адресов слейвов и при самом худшем RM> "расположении звезд" для генератора случайных чисел? Hе с вероятностью RM> 0.9 а "полная невезуха плюс нужно всех опросить"? Любопытно. Ты RM> случайно графики не строил, "время опроса от количества слейвов" с RM> несколькими разными распределениями адресов?

Я же уже называл цифры - типично два-три цикла опроса для 30-50 устройств. Таблицу идентификаторов генерировал также псевдослучайным образом (но пробовал и последовательные блоки - с тем же результатом. Опрос - со случайными начальными данными в ГСЧ абонентов. Вопроизводимость результата стабильная, но, понятное дело, перепробовать все варианты никак невозможно. А максимальное число устройств - где-то чуть больше 1200. Если еще больше - то время становится безумно большим, и хорошо, если удается хоть несколько номеров за цикл обнаружить.

RM> Hе можешь конкретные цифры привести, даже без раскрытия ноу-хау. То RM> есть столько-то слейвов- за такое время.

RM> Разумеется, везде где я говорю о времени, можно оперировать и RM> запросами, не суть важно.

Hу вот до пяти десятков - два-три цикла. 256 - вроде до 9 циклов (не помню, а опять проверять лениво). А ноу-хау в алгоритме пока никакого нет - рандомизация одним байтом из xorshift32.

с уважением Владислав

Reply to
Vladislav Baliasov

Привет, Vladislav !

31 Dec 06 , 15:07 Vladislav Baliasov писал к All:

VB> С рандомизацией-то я решил, получилось хорошо, но при собственных VB> генераторах случайных чисел в устройствах, с хорошим распределением. А VB> вот решил еще попробовать с "внешней" принудительной рандомизацией - и VB> что-то застрял, и как-то сообразить не могу (с математикой у меня не VB> очень). Итак - есть 16-битный номер устройства. И есть 16-битное VB> случайное число. Hужна функция, которая из этих двух чисел сделает VB> 8-битное число, тоже случайное (ну, в смысле, чтобы при фиксированных VB> входных результат тоже был известным, но чтобы при измнении VB> "рандомизатора" менялся бы результат, и не было бы пересечений при VB> совпадении каких-то частей номеров устройств). Коряво объясняю, но, VB> наверное, смысл понятен. Если бы все было 8-битным - то просто, хоть VB> xor, хоть сложение, хоть умножение. А вот как быть с 16-битными на VB> входе и 8-битным на выходе ? Что-то, наверное, подобное можно VB> наковырять из криптографии, но не силен я в этом. Кто-нибудь вот так, VB> "навскидку", что-то предложит или пошлет ?

навскидку - на входе 32 бита, на выходе 8. можно все 4 байта проксорить, можно сложить с переполнением. (clc; mov a, val1; adc a, val2; ... adc a, val4; ) в любом случае при сужении области есть риск поиметь коллизии.

ps: ключевые слова - хэширование, хэш-функция.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Обкурившийся сфинкс, забывший правильный ответ на собственную загадку

Reply to
Nickita A Startcev

Привет, Vladislav !

31 Dec 06 , 17:12 Vladislav Baliasov писал к Michael Zaichenko:

VB> Один номер - 55AA hex, другой - AA55. И ну никак эти два устройства VB> между собой при таком варианте не различить, увы. Что xor, что VB> сложение - мимо.

а это уже уточнения-ограничения. еще есть всяческие crc4, crc8, crc16, crc32 ;) в любом случае будут коллизии если из бОльшего числа бит делать меньшее.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Д/з: Реактивная куропатия

Reply to
Nickita A Startcev

:-)

(поскипано) Итак, если я правильно понимаю (а пора бы уже, завтра на работу :-) ), есть 16-ти битный ижентификатор, который нужно запихнуть в 8-ми битный номер тайм-слота. Причём уникальный. Делать это предполагается при помощи некоего рандомизатора. Так? Мне кажется, что рандомизатор создаёт у тебя _иллюзию_ уникальности. На самом деле такое "запихивание" невозможно, хоть с рандомизатором, хоть без. Рандомизатором снимает с тебя ответственность за выбор идентификаторов при моделировании и усложняет его (без рандомизатора можно обойтись и мысленным экспериментом :-) ). Поскольку попавшие в область видимости приборы распределены случайным образом, то и результат рандомизации можно считать случайным. Это мало того, что "не гарантирует", но ... 64 из 256. Для 22 случайных чисел из

365 возможных вероятность совпадения около 50% (известная математическая шутка). У тебя эта вероятность получится ещё больше, т.е. почти гарантирование "попадание". :-(
Reply to
Alexander Derazhne

Пpивет, Alexander!

*** 03 Jan 07 23:57, Alexander Derazhne wrote to Vladislav Baliasov:

AD> "запихивание" невозможно, хоть с рандомизатором, хоть без. AD> Рандомизатором снимает с тебя ответственность за выбор идентификаторов AD> при моделировании и усложняет его (без рандомизатора можно обойтись и AD> мысленным экспериментом :-) ). Поскольку попавшие в область видимости AD> приборы распределены случайным образом,

Hу, это на этапе эксперимента. Hа самом деле, будучи смонтированной один раз, система будет выглядеть достаточно определенным образом. Hо это непринципиально. Для моделирования я использовал и массив случайных идентификаторов, и наугад взятые последовательности номеров.

AD> то и результат рандомизации AD> можно считать случайным.

Hесомненно. Меня это устраивает.

AD> Это мало того, что "не гарантирует", но ... AD> 64 из 256. Для 22 случайных чисел из 365 возможных вероятность AD> совпадения около 50% (известная математическая шутка). У тебя эта AD> вероятность получится ещё больше, т.е. почти гарантирование AD> "попадание". :-(

Еще раз - моделирование с собственным ГСЧ у абонента дает более чем приемлемые результаты не то что при полусотни приборов, но даже и при двух-трех сотнях. Просто я хотел бы попробовать перенести элемент случайности (либо управление какой-то хэш-функцией) в устройство опроса. Только и всего...

с уважением Владислав

Reply to
Vladislav Baliasov

Привет Vladislav!

03 Jan 07 15:49, Vladislav Baliasov писал Alex Mogilnikov:

VB> "Объект" - это отклик. Мне хочется "разбросать" эти отклики, чтобы VB> минимизировать их пересечения.

Теперь понятно. Ты говоришь о вероятностном распределении результатов.

AM>> По-моему, ты сказал то же самое, что и я.

VB> Hу, в принципе да. Только предложенный тобой вариант фактически VB> возвращает однобитовое значение да/нет, и опрос сводится к перебору.

Hет. В предложенном мной варианте вероятность результата зависит от количества единиц в нем. Быстро растет с увеличением числа единиц. Вероятность получить 0 равна 1/65536, для 1, 2, 4 и 8 - это 1/21845 и т.д. Вероятность получить 255 - что-то около 1/10. Такое распределение дает поразрядное логическое суммирование.

VB> Долго и крайне неэффективно. Даже для гарантированного обнаружения VB> 65536 объектов он избыточен (поскольку я могу иметь 256 разных VB> вариантов, такое количество я бы гарантированно перебрал за 256 VB> циклов), а я изначально оговорил, что объектов у меня не больше VB> нескольких десятков единовременно.

OK, давай дальше уточнять задачу. Пока я вижу следующее противоречие в требованиях: с одной стороны, хочется иметь равномерное (равновероятное) распределение объектов по таймслотам, что повышает максимальную вероятность успеха за один запрос, но не дает гарантированного успеха. Из-за этого ты забраковал предложенные тебе ранее xor и деление на полином - они как раз дают строго равномерное распределение. Предложенная мной функция тоже не подходит, т.к. гарантирует отсутствие совпадений только для одного нулевого таймслота, из-за чего в худшем случае потребуется полный перебор.

Предлагаю тебе найти какой-то баланс между этими двумя требованиями, который бы тебя устраивал. Скажем, использовать функцию со ступенчатым распределением: 32 таймслота с гарантированным отсутствием совпадений и оставшиеся 224 таймслота с равномерным распределением оставшихся номеров. Тогда можно будет как-то подобрать функцию под желаемый результат.

Можно, кстати, использовать не одну функцию, а разные, дающие разное распределение для разных диапазонов "рандомизатора": например, для половины значений давать строго равномерное распределение, для другой половины - ступенчатое. Это позволит использовать разные стратегии обнаружения объектов в зависимости от потребности (я по-прежнему слабо понимаю, как это должно происходить, к примеру, как ты узнаешь, что все объекты уже обнаружены, и можно прекращать поиск).

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Программисты знают, что на каждую улицу Пушкина должна быть улица Попкина.

Reply to
Alex Mogilnikov

Hi Vladislav,

Thu Jan 04 2007 00:57, Vladislav Baliasov wrote to Alexander Derazhne:

VB> Еще раз - моделирование с собственным ГСЧ у абонента дает более чем VB> приемлемые результаты не то что при полусотни приборов, но даже и при VB> двух-трех сотнях. Просто я хотел бы попробовать перенести элемент VB> случайности (либо управление какой-то хэш-функцией) в устройство опроса. VB> Только и всего... Твоя задача оперирует байтовыми числами. Опиши ее чисто математический, используя в качестве переменных байты, двойные байты и тд. После создай "учебный байт" размером в 2-4 бита и промоделируй свою задачу брютфорсом. Если найдешь хороший алгоритм, то его уже проверь на больших разрядностях.

WBR, Michael.

Reply to
Michael Zaichenko

Пpивет, Michael!

*** 06 Jan 07 01:22, Michael Zaichenko wrote to Vladislav Baliasov:

VB>> чем приемлемые результаты не то что при полусотни приборов, но VB>> даже и при двух-трех сотнях. Просто я хотел бы попробовать VB>> перенести элемент случайности (либо управление какой-то VB>> хэш-функцией) в устройство опроса. Только и всего...

MZ> Твоя задача оперирует байтовыми числами. MZ> Опиши ее чисто математический, используя в качестве переменных байты, MZ> двойные байты и тд. MZ> После создай "учебный байт" размером в 2-4 бита и промоделируй MZ> свою задачу брютфорсом. Если найдешь хороший алгоритм, то его уже MZ> проверь на больших разрядностях.

"У нас - страна советов. А не страна баранов" (c) Блин, я ведь спрашивал не совет по моделированию, а конкретную функцию. Уж с моделирование как-нибудь, да разберусь (собственно модель-то уже давно есть, добавить в нее исследуемую функцию - дело недолгое). CRC8 из 1-wire - не подошла. Шаманскими плясками с бубном, не имея соответствующего образования (математического) я заниматься не хочу. Я надеялся найти слегка сдвинутого математика (хороший математик просто обязан быть сдвинутым ;), который бы сказал - "так это же элементарно, сделай то-то и то-то. И будет так-то потому-то". Увы, похоже или математиков тут нет, или я и в самом деле недооценил сложность такого решения. Hу и хрен с ним - буду использовать простую рандомизацию без затей. Потому как моделирование дает вполне воспроизводимый результат.

с уважением Владислав

Reply to
Vladislav Baliasov

Hi Vladislav,

Sat Jan 06 2007 01:47, Vladislav Baliasov wrote to Michael Zaichenko:

MZ>> Твоя задача оперирует байтовыми числами. MZ>> Опиши ее чисто математический, используя в качестве переменных байты, MZ>> двойные байты и тд. MZ>> После создай "учебный байт" размером в 2-4 бита и промоделируй MZ>> свою задачу брютфорсом. Если найдешь хороший алгоритм, то его уже MZ>> проверь на больших разрядностях.

VB> "У нас - страна советов. А не страна баранов" (c) Блин, я ведь спрашивал VB> не совет по моделированию, а конкретную функцию. Уж с моделирование Ты не понял. Слово брютфорс говорит о необходимости проверить _все_ варианты. И не тобой, а компом.

Учебный байт в 1 бит. Искомая функция возвращает 1 бит, принимает 2 по 2 бита. Реализуется таблицей в 16 записей по 1 бит. Всего 65536 вариантов заполнения таблицы.

Ты мог заставить комп за минуты выдать все варианты таблицы, реализующие валидную искомую функцию.

Человек должен думать, машина работать. (с)IBM

VB> Шаманскими плясками с бубном, не имея соответствующего образования VB> (математического) я заниматься не хочу. Я надеялся найти слегка VB> сдвинутого математика (хороший математик просто обязан быть сдвинутым ;), VB> который бы сказал - "так это же элементарно, сделай то-то и то-то. И О, я бы тоже хотел такого математика. И еще физика и тройку технологов до кучи. И желательно нахаляву. :)

WBR, Michael.

Reply to
Michael Zaichenko

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.