![]() | |
| |||||||
| Home | Register | Blogs | FAQ | Members List | Calendar | Downloads | Arcade | Mark Forums Read |
| Algorithms The source of algorithms for your project |
![]() |
| | LinkBack | Thread Tools | Display Modes |
| | #1 |
| Moderator Join Date: Jul 2002 Location: Yerevan
Posts: 450
Rep Power: 7 Reputation:
10 | Задачка по поиску... Есть массив из 256 значений, из которых два достоверно удовлетворяют некому условию... Узнать какие именно можно лишь подставив данные значения в это условие... требуется найти любое одно из этих двух значений... есть ли какая нибудь методика перебора(окромя простого последовательного перебора) чтоб найти одно из двух значений хотя бы не более чем за 128 проверок (если еще меньше то еще лучше ) с очень высокой долей вероятности (80-90 %)... Или хотя бы убедиться что это невозможно.. Другой дополнительной инфы нету, типа отсортированности для бинарного поиска и т.д. |
| | |
| | #2 |
| Грустно... | Чтоб я полностью осознал задачу переспрошу: известно, что только 2 числа равны друг другу, но не извесно какие? нужно найти это число?
__________________ http://аvitya.livejournal.com Хотели, как лучше, а получилось даже хуже... Лозунг шахматиста: На каждый шах - ответим матом! |
| | |
| | #3 | |
| The Reloaded Join Date: Jan 2002 Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,178
Rep Power: 7 Reputation:
45 | Quote:
__________________ Сайт армянских маньяков | |
| | |
| | #4 | |
| Moderator Join Date: Jul 2002 Location: Yerevan
Posts: 450
Rep Power: 7 Reputation:
10 | Quote:
| |
| | |
| | #5 |
| The Reloaded Join Date: Jan 2002 Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,178
Rep Power: 7 Reputation:
45 | кстати, а что подразумевается под нахождением с точносьтю до 80-90%?
__________________ Сайт армянских маньяков |
| | |
| | #6 |
| Грустно... | Я тоже склонен думать, что не выйдет. Разве, что можешь попробовать искать с двух сторон одновременно, что при равномерном распределение чисел по массиву может уменьшить кол проверок типа: PHP Code:
__________________ http://аvitya.livejournal.com Хотели, как лучше, а получилось даже хуже... Лозунг шахматиста: На каждый шах - ответим матом! |
| | |
| | #7 |
| The Reloaded Join Date: Jan 2002 Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,178
Rep Power: 7 Reputation:
45 | интуиция подсказывает, что можно, не ограничивая общности, ограничиться случайной выборкой 128 элементов из данных 256. пусть нашему условию удовлетворяют элементы a и b. вероятность попадания хотя бы одного из них в нашу выборку - 75%.
__________________ Сайт армянских маньяков |
| | |
| | #8 | |
| Administrator | заметка Quote:
Я к тому, что в данном случае "с двух концов" не увеличивает скорость поиска - всиравно в сумме делаешь 256 проверок, а не 128. чисто технически наличие условия "if..else" в цикле сильно замедляет скорость выполнения цикла.
__________________ И повешенные могут качаться в неположенную сторону. /С.Е.Лец/ | |
| | |
| | #9 |
| Administrator | единственный путь для ускорения я вижу в самом условии, которое здесь было оговорено абстрактно. т.е. исходя из него возможно сгруппировать (и/или упорядочить) данные либо перестроить цикл.
__________________ И повешенные могут качаться в неположенную сторону. /С.Е.Лец/ |
| | |
| | #10 | |
| Moderator Join Date: Jul 2002 Location: Yerevan
Posts: 450
Rep Power: 7 Reputation:
10 | Quote:
| |
| | |
| | #11 | |
| The Reloaded Join Date: Jan 2002 Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,178
Rep Power: 7 Reputation:
45 | Quote:
__________________ Сайт армянских маньяков | |
| | |
| | #12 |
| Moderator Join Date: Jul 2002 Location: Yerevan
Posts: 450
Rep Power: 7 Reputation:
10 | И правда же... совсем мозги заржавели... фактически нужно каждый раз случайным образом выбирать 128 элементов... а если выбрать 192 то и за все 90% переходит... но 192 это много... Вообщем все ясно.. Всем спасибо.. |
| | |
| | #13 | |
| ЙЦУКЕН | Quote:
считай, что _случайным_ образом я выбрались первые 128 элелемтов ))) почтому слово случайный -- выкидываем ))) так что я бы предложил другой алгоритм - просто идти с начала и проверять. если попал на ответ - хорошо, выходим из цикла, если нет -идем дальше в среднем у тебя будет 64 итерации на каждый поиск. вероятность того, что ты сделаешь 253 проверки -1/(253*254), если я все правильно понимаю ))) если у тебя есть возможность оценивать _хорошесть_(ты имешь какую-то оценочную функцию) ответа - то стоит запоминать позицию и значение этой функции. если ты прошел первые N элементов и не нашел искомого значения -- то тогда просто прерываешь поиск и возвращаешь _хороший_ результат. в принципе это актуально для задач реального времени, когда важно найти результат в заданый промежуток времени и приемлемо, если он будет не совсем точным. | |
| | |
| | #14 |
| Moderator Join Date: Jul 2002 Location: Yerevan
Posts: 450
Rep Power: 7 Reputation:
10 | а 64 итерации откуда? а слово случайный выкидывать не надо.. потому как условие все время меняется..а значит и пары цифр удовлетворяюшие ему... Ведь то что условие неизвестно, не означает что оно не подчинено определенной логике...и вполне может сказаться что постоянный выбор первых 128 цифр и есть худший вариант... А выбирая каждый раз случайным образом можно эту логику перебить и иметь в среднем эти 75% ... |
| | |
| | #15 | |
| ЙЦУКЕН | Quote:
))) я к тому, что генерация _случайного_ числа и выборка _неповторяющегося_ _случайного_ индекса -- задача довольно трудоемкая ))) 64 итерации -- если у тебя ответы распределены равномерно по всем 256 индексам, тогда получается след. вариант: вероятность того, что мы нашли ответ в N-ной итерации - 1/256 /* первое число может быть в любой из N позиций */ x (255-N)/255 /* второе число должно быть в позиции больше , чем N */ x 2 /* у нас нет _первого_ и _второго_ числа, у нас есть просто число, которое надо найти, т.е. задача симметрична */ вот .... и при помощи простой арифметики получаем, что сумма таких вот вероятностей для N=0 по N=64 получается около 0.45 .... тааак что-то в формуле не так, но вобщем результат имхо именно такой должен быть - за 64 итерации ты с вероятностью 1/2 находишь искомый ответ.ндя. я уже даже как-то засомневалсь, в том что написал ))) но все-таки мне кажется, именно так, а не иначе ![]() | |
| | |
![]() |
| Thread Tools | |
| Display Modes | |
| |
Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| задачка на тему Самолет | mk | General | 186 | Dec 23, 2004 16:07 |
| Задачка | Shirinyan | Fun | 13 | Oct 22, 2003 13:41 |
| Задачка от Альберта, самого Энштейна | R0nIn | General | 34 | Aug 19, 2003 19:24 |
| Еще одна задачка | Agregat | Languages, Compilers and Interpreters | 15 | Oct 8, 2002 19:22 |
| Задачка | Amph | Algorithms | 1 | May 29, 2002 04:02 |