|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.06.2009, 23:19 | #1 |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Теоретический Вопрос о поиске
Привет
Теоретический Вопрос Сколько сравнений требуется для поиска ключа 37 в 10-элементной хеш-таблице вида 70, 51, 22, 13, 94, 25, 0, 37, 0, 89, построенной с помощью простейшей хеш-функции? 1. одно 2. восемь 3. три 4. 10 Я думаю, что ответ№ 2. Это правильно? |
10.06.2009, 23:46 | #2 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Вроде, восемь. Но если идти от конца, то три. Как-то неоднозначно получается. Хотя в хеш-таблицах, насколько я знаю, поиск от начала.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
11.06.2009, 00:47 | #3 | |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Цитата:
а я вот как думаю эти ключи надо разместить в массиве из 10 ячеек с помощью хеш-функции для этого делим ключи нацело на 10 остаток - индекс в массиве получилась такая хеш-таблица ___________________________ 1_2_3__4__5__6__7__8__9__10 0_0_70_51_22_13_94_25_37_89 ищем 37 - 37 делим на 10, берем остаток 7, заходим в ячейку 7, но там 94, значит начинаем идти с начала и сравниваем итого 8 сравнений. пока не доберемся до 37 вроде как-то так.... Это правильно? Последний раз редактировалось diliana; 11.06.2009 в 00:56. |
|
11.06.2009, 01:09 | #4 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Не о том подумал
Мало я знаю о хеш-таблицах... Вроде, все логично. Но если в качестве элементов таблицы использовать списки, то, по идее, мы найдем нужное значение за 1 сравнение, т.к. 37 будет в ячейке 7. Разве нет? То есть таблица будет представлять из себя что-то вроде этого: Код:
Цитата:
Тогда уже получится 3 сравнения.. Хм..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] Последний раз редактировалось Sazary; 11.06.2009 в 01:18. |
|
11.06.2009, 01:28 | #5 | |||
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Цитата:
Цитата:
хеш-таблицей называется массив заполненный элементами в порядке определяемом хеш-функцией Цитата:
там как раз списки и применяются, но это не хеш... |
|||
11.06.2009, 01:32 | #6 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Я не изобретал Это уже придумано до меня ) И называется "внешнее хеширование", или "метод цепочек"
http://wwwcdl.bmstu.ru/iu7/stage8.htm Если речь конкретно о массиве, то да, число вариантов сокращается до 2-х. Т.к. я по-прежнему считаю, что можно идти сразу от 7-й ячейки, а не от начала.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
11.06.2009, 01:53 | #7 | ||
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Цитата:
Цитата:
Так как варианта ответа «2 сравнения» нет, то остается или вариат «1 сравнение» или «3 сравнение» Если принять во внимание открытое хеширование+гадание на филосовском камне,то значит побеждает вариант «1 сравнение» Это правильно? |
||
11.06.2009, 01:58 | #8 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Проверяем 7-ю ячейку - там 94. Это раз. Проверяем 8-ю - там 25. Это два. Проверяем 9-ю - там 37. То, что надо. Итого - 3 сравнения. Я лично больше склоняюсь именно к варианту 3 (если не брать во внимание открытое хеширование). А вообще, ведь тут от реализации зависит. Можно сделать и так, чтобы поиск шел от начала (тогда будет 8 сравнений). Но это как-то неэффективно. Ведь мы знаем, что не спроста в 7-й ячейке число, которое дает при делении на 10 в остатке 4. То есть мы знаем, что 37 будет правее 94.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
11.06.2009, 02:14 | #9 | |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Цитата:
Полностью с вами согласна! Все очень логично! Также еще раз общалась с философским камнем, он тоже это подтвердил! Sazary большое спасибо за внимание!!! |
|
11.06.2009, 02:28 | #10 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Если так подумать, то тут и оставшийся вариант (10) подходит, правда, если сделать ну очень глупую реализацию (с проходом по всей таблицей и запоминанием индекса совпавшего элемента)..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Требуется помощь в поиске информации | 5naip | Свободное общение | 2 | 21.05.2009 04:54 |
Нужна помощь в поиске и сортировки(на Delphi) | Mamant | Помощь студентам | 1 | 05.05.2009 14:40 |
Нужна помощь в поиске ошибки | m9ss | Общие вопросы Delphi | 6 | 05.03.2009 13:14 |