Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Возьмём для примера игру в угадывание целого числа в определенном диапазоне. Например, от 1 до 128. Один играющий загадывает число, второй пытается его угадать, задавая вопросы, на которые ответом может быть «да» или «нет». Ключом поиска в этом случае является число, а критерием поиска – совпадение числа, задуманного первым игроком, с числом, называемым вторым игроком.
Если вопросы задавать такие: «Число равно единице?». Ответ: «Нет». Вопрос: «Число равно двум?» и т.д., то это будет последовательным перебор. Среднее число вопросов при многократном повторении игры с загадыванием разных чисел из данного диапазона будет равно 12/2 = 64.
Такой метод поиска называется методом половинного деления. Согласно этому методу, вопросы надо задавать так, чтобы каждый ответ уменьшал число неизвестных в два раза.
Так же надо искать и одно число из 128. Первый вопрос: «Число меньше 65?» – «Да! – «Число больше 32?» – «Нет!» и т. д. Любое число угадывается максимум за 7 вопросов. Это связано с тем, что 128 = 27. Снова работает главная формула информатики.
Метод половинного деления для упорядоченного набора данных работает гораздо быстрее (в среднем), чем метод последовательного перебора.
На рисунке наглядно показан процесс поиска (угадывания) числа «3» из диапазона целых чисел от 1 до 8.
Если максимальное число диапазона N не равно целой степени двойки, то оптимальное количество вопросов не будет постоянной величиной, а будет равно одному из двух значений: X или Х+1, где
2Х < N < 2X+1
Например, если тело ищется в диапазоне от 1 до 7 то его можно угадать за 2 или 3 вопроса, поскольку
22 < 7 < 23.
Число из диапазона от 1 до 200 можно угадать за 7 или 8 вопросов, поскольку
27 < 200 < 28.
Проверьте эти утверждения экспериментально.
Половинным делением можно искать, например, нужную страницу в толстой книге: открыть книгу посередине, понять, в какой из половин находится искомая страница. Затем открыть середину этой половины и т. д.
Набор данных может быть упорядочен не только по числовому ключу. Другой вариант упорядочения – по алфавиту. Половинным делением можно осуществлять поиск в орфографическом словаре или в словаре переводов слов с иностранного языка.
Дата публикования: 2014-10-19; Прочитано: 3273 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!