Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_na_voprosy_k_ekzamenu_po_AiSD.docx
Скачиваний:
44
Добавлен:
29.04.2019
Размер:
417.06 Кб
Скачать

22. Индексно-последовательный поиск

При таком поиске организуется две таблицы: таблица данных со своими ключами (упорядоченная по возрастанию) и таблица индексов, которая тоже состоит из ключей данных, но эти ключи взяты из основной таблицы через определенный интервал (рис. 5.3).

Сначала производится последовательный поиск в таблице индексов по заданному аргументу поиска. Как только мы проходим ключ, который оказался меньше заданного, то этим мы устанавливаем нижнюю границу поиска. В основной таблице - low, а затем - верхнюю - hi, на которой (kind>key).

Например, key = 101 Поиск идет не по всей таблице, а от low до hi.

Алгоритм

i = 1

while (i <= m) and (kind(i) <= key) do

i=i+1

endwhile

if i = 1 then low = 1

else low = pind(i-1)

endif

if i = m+1 then hi = n

else hi = pind(i)-1

endif

for j = low to hi

if key = k(j) then

search = j

return

endif

next j

search = 0

return

Эффективность индексно-последовательного поиска

Если считать равновероятным появление всех случаев, то эффективность поиска можно рассчитать следующим образом:

Введем обозначения: m-размер индекса; m=n/p, где p-размер шага.

Тогда:

Q=(m+1)/2+(p+1)/2=(n/p+1)/2 +(p+1)/2=n/2p+p/2+1

Продифференцируем Q по p и приравняем производную нулю:

dQ/dp=(d/dp)(n/2p+p/2+1)=-n/2p2 +1/2=0

Отсюда p2=n; pопт=

Подставим pопт в выражение для Q, получим следующее количество сравнений:

Q= +1

Порядок эффективности индексyо-последовательного поиска Q( ).

23. Переупорядочивание таблиц с учетом вероятности поиска элемента; переупорядочивание путем перестановки в начало списка

Методы оптимизации поиска

Будем считать, что искомый элемент в таблице существует.

Можно говорить о некотором значении вероятности поиска того или иного элемента в таблице. Тогда вся таблица поиска может быть представлена как система с дискретными состояниями, а вероятность поиска там i - го элемента - это вероятность p(i) i - го состояния системы.

р(i) = 1

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

Z = C = 1p(1) + 2p(2) + 3p(3) +…+ np(n)

Желательно, чтобы p(1) ≥ p (2) ≥ p (3) ≥ …≥ p (n).

Это минимизирует количество сравнений, то есть увеличивает эффективность. Так как последовательный поиск начинается с первого элемента, то на это место надо поставить элемент, к которому чаще всего обращаются (с наибольшей вероятностью поиска).

24) Метод оптимизации поиска путем (Переупорядочивание таблицы) перестановки найденного элемента в начало списка

Суть этого метода заключается в том, что элемент списка с ключом, равным заданному, становится первым элементом списка, а все остальные сдвигаются.

Этот алгоритм применим как для списков, так и для массивов. Однако не рекомендуется применять его для массивов, так как на перестановку элементов массива затрачивается гораздо больше времени, чем на перестановку указателей.

Алгоритм перестановки в начало списка:

q= nil

p = table

while (p <> nil) do

if key = k(p) then

search = p

if q = nil

then 'перестановка не нужна'

return

endif

nxt(q) = nxt(p)

nxt(p) = table

table = p

return

endif

q = p

p = nxt(p)

endwhile

search = 0

return

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]