Помогите с поиском решения

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Помогите с поиском решения

Сообщение jangle » 16.04.2009 (Чт) 16:57

Есть такая задачка. Допустим на складе лежит 100000 коробок. В одной из них, лежит ключ. В какой именно неизвестно. Все коробки пронумерованы от 1 до 100000. Задача: найти ключ наиболее быстрым способом. Есть два варианта:

1. Тупо открывать подряд, все коробки с 1 по 100000.
2. Открывать случайную коробку, разумеется игнорируя уже открытые.

Какой способ предпочтительнее? Если ключ лежит скажем в 200 коробке, то разумеется первый способ.
А если в 95941-ой? То наверное второй, т.к. есть вероятность, что мы ее откроем быстрее, чем при простом переборе. Проблема, что заранее неизвестно в какой коробке лежит ключ.
ИМХО оба способа равноценны, только я не могу придумать математического обоснования для этого.
А вы как думаете?

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Помогите с поиском решения

Сообщение Debugger » 16.04.2009 (Чт) 17:59

Конечно. Если ключ положен случайным образом, то оба равноценны.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Помогите с поиском решения

Сообщение MIT » 16.04.2009 (Чт) 18:06

3) Разбить на секции по 1000 коробок и проверять по очереди коробки каждой секции, т.е. при первом проходе это будет:
0
1000
2000
3000
...
99000
при втором:
1
1001
2001
...
99001
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Помогите с поиском решения

Сообщение Debugger » 16.04.2009 (Чт) 18:11

MIT, коробка будет 99999й :D .
Тут все способы перебора работаею одинаково.
Могу предложить еще один метод. Проверять первый, последний, второй, предпоследний, третий и т.д. т.е. сначала следующий с начала, потом предыдущий с конца.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Помогите с поиском решения

Сообщение MIT » 16.04.2009 (Чт) 18:18

Debugger писал(а):коробка будет 99999й
возможно
Debugger писал(а):Тут все способы перебора работаею одинаково.
Нет, у способа с распределенным просчетом несколько больше шансов.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Помогите с поиском решения

Сообщение SLIM » 16.04.2009 (Чт) 19:08

Советую попробовать метод "загони тигра"
Количество ящиков разбивается по возможности равные части. Эти две части разбиваются еще на две каждая, потом еще.
Пробегать эти разбитые кусочки можно в произвольном случайном порядке. Каждый раз, после прочесывания квадрата у тебя будет исключаться большой кусок, а ресурсов на поиск уйдет намного меньше.
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Помогите с поиском решения

Сообщение Хакер » 16.04.2009 (Чт) 19:11

Способы равноценны.
Математически это обосновывается тем, что вероятность угадывания на каждой итерации соответственно одинаковая, что там, что там.

Первый быстрее, т.к. не надо вести учёт уже выпавших случайных индексов.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Помогите с поиском решения

Сообщение jangle » 16.04.2009 (Чт) 19:44

Понятно, значит как я предпологал все способы равноценны.
А вот если ключ, прячет человек. Наверняка тут сработает психология, он не будет класть его в первые и последние коробки, а постарается упрятать где-нибудь посередине. Значит вероятность "по краям" будет ниже, чем в центре. Получается колоколобразное распределение.

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Помогите с поиском решения

Сообщение Alec » 16.04.2009 (Чт) 20:15

jangle писал(а):Получается колоколобразное распределение.

Не факт. В середину так-же не будет ложить.
С другой стороны - может положить и по краю и в центре - предполагая, что ищущие будут использовать именно такое распределение вероятности.
Иногда лучше вовремя остановиться...
И начать заново!

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Помогите с поиском решения

Сообщение jangle » 16.04.2009 (Чт) 20:31

Alec писал(а):Не факт. В середину так-же не будет ложить.
С другой стороны - может положить и по краю и в центре - предполагая, что ищущие будут использовать именно такое распределение вероятности.


Допустим, надо придумать числовой пароль в диапазоне от 1 до 10000. Я бы наверное не стал, выбирать числа по краям диапазона. А выбрал, что-нибудь типа 6793

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Помогите с поиском решения

Сообщение iGrok » 17.04.2009 (Пт) 0:15

jangle писал(а):Допустим

И вот одним этим словом все теории про психологию обламываются.

Действительно, при любом способе кроме "влоб и по очереди" ты просто будешь тратить дополнительное процессорное время на учёт обработанных коробок.
label:
cli
jmp label

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Помогите с поиском решения

Сообщение jangle » 17.04.2009 (Пт) 10:03

iGrok писал(а):Действительно, при любом способе кроме "влоб и по очереди" ты просто будешь тратить дополнительное процессорное время на учёт обработанных коробок.


Еще надо учитывать, что коробка "открывается" не мгновенно. Допуститм идет криптографическая атака, брутфорс RAR - архива. Проверка даже одного пароля - занимает очень много процессорного времени, а учет обработанных паролей - ничтожное. Здесь (как мне кажется) реально может помочь только одно - оптимизация полного перебора, путем сужения пространства решений, с отбрасыванием предположительно "плохих" паролей типа 11111, AAAAA, 33333. Такие пароли, должны быть проверены в самую последнюю очередь. Это конечно при условии, что пароль придумывает человек, а не машина.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Помогите с поиском решения

Сообщение Williams » 17.04.2009 (Пт) 10:22

Если речь идет о стандартном кодовом замке с 3-мя цифрами на чемодане, большинство ставит что-то ближе к 999, т.к. ошибочно полагает что так безопаснее :)
И вы думаете, что вас оставят в живых после прочтения этого поста?

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Помогите с поиском решения

Сообщение jangle » 17.04.2009 (Пт) 10:43

Williams писал(а):Если речь идет о стандартном кодовом замке с 3-мя цифрами на чемодане, большинство ставит что-то ближе к 999, т.к. ошибочно полагает что так безопаснее :)


Помню я такие чемоданы, вскрываются полным перебором за час :mrgreen:

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Помогите с поиском решения

Сообщение iGrok » 17.04.2009 (Пт) 13:04

jangle писал(а):
Williams писал(а):Если речь идет о стандартном кодовом замке с 3-мя цифрами на чемодане, большинство ставит что-то ближе к 999, т.к. ошибочно полагает что так безопаснее :)


Помню я такие чемоданы, вскрываются полным перебором за час :mrgreen:

Вскрываются они за пять минут вращением колец с небольшим усилием. Косяк конструкции замка. =)
label:
cli
jmp label

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Re: Помогите с поиском решения

Сообщение Amed » 17.04.2009 (Пт) 13:12

jangle, предложи форумчанам опрос.

[quote]Перед Вами стоят 100 ящиков, пронумерованных от 1 до 100. У Вас есть ключ и Вам нужно его спрятать в один из ящиков так, чтобы его искали как можно дольше. Какой ящик Вы выберете?[quote]

Заодно узнаем "психологический" вариант распределения ключей по ящикам :)

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Помогите с поиском решения

Сообщение 1Steps » 18.04.2009 (Сб) 3:30

Как вариант, если коробки пустые.
Делишь пополам, проверяешь какая половина больше весит, отбрасываешь не нужную и т.д.
Удалена за ненадобностью.

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Помогите с поиском решения

Сообщение 1Steps » 18.04.2009 (Сб) 4:24

Эту задачу задают здесь(в Америке) начинающим программистам при устройстве на работу.

Условие.
У Вас есть 6 шаров.
Один шар весит больше, чем остальные.

Задача.
Найти тяжёлый шар в 2 взвешивания.

Решение.
Действие первое.

Делим на 2.
Взвешиваем обе части.
Меньшую выбрасываем.

Действие второе.
Оставшихся три шара делим на 2 с отатком в один шар.
Взвешиваем любых два шара(из трёх).
Если вес равен, значит оставшийся шар тяжелее.

Смысл ты понял. :D
Удалена за ненадобностью.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Помогите с поиском решения

Сообщение jangle » 18.04.2009 (Сб) 11:17

Amed писал(а):jangle, предложи форумчанам опрос.

Перед Вами стоят 100 ящиков, пронумерованных от 1 до 100. У Вас есть ключ и Вам нужно его спрятать в один из ящиков так, чтобы его искали как можно дольше. Какой ящик Вы выберете?

Заодно узнаем "психологический" вариант распределения ключей по ящикам :)


У меня есть база паролей (несколько сотен штук) придуманных пользователями одной нашей системы. Вот по ним и изучаю психологию юзеров, одно могу сказать наверняка - случайных паролей там нет. Все в той или иной степени осмысленные. Много цифровых, номера автобусов например, телефоны, модели машин, районы Москвы, улицы и т.д. Строчек типа @3rt!$Dh3L - нет вообще

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Помогите с поиском решения

Сообщение jangle » 18.04.2009 (Сб) 11:18

1Steps писал(а):Как вариант, если коробки пустые.
Делишь пополам, проверяешь какая половина больше весит, отбрасываешь не нужную и т.д.


В моем случае, речь идет о поиске и брутфорсе паролей, думаю это уже понятно ))

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Re: Помогите с поиском решения

Сообщение Zenitchik » 18.04.2009 (Сб) 19:40

А я всегда генерю рандомный пароль, посредством программы собственной разработки.
Знание английского языка - затрудняет понимание кода


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 55

    TopList  
cron