Я собираюсь кратко обрисовать набросок аргумента противника.
Рассмотрим алгоритм выбора, который вы играете против оппонента, которого мы назовем противником. Цель противника - предоставить вход Икс для вашего алгоритма, который максимизирует количество операций сравнения, выполняемых вашим алгоритмом. Действительно, ваш алгоритм можно рассматривать как дерево сравнения, в котором путь соответствует частичному порядку. Когда алгоритм запрашивает противника о паре ( х , у) элементов, противник возвращает либо х < у либо Y< х . Ответы противника никогда не могут противоречить предыдущим результатам.
Предположим, что К величине элемент равен Икс* : учитывая частичный порядок, связанный с любым листом дерева сравнения, тогда Икс* должен быть сопоставим с любым другим элементом, чтобы алгоритм был корректным, поэтому алгоритм должен иметь сделал хотя бы одно сравнение ( у, z) ∀ у≠ х* , результатом которого является либо Y< z≤ х* либо Икс*≤ z< у . Назовите такое сравнение решающим для элемента Y, Очевидно, что противник хочет максимизировать количество несущественных сравнений, выполненных вашим алгоритмом.
Пусть L - множество из к - 1 самых больших элементов; Ваш алгоритм должен правильно идентифицировать все элементы в L а также самый большой элемент в Икс∖ L , то есть x∗ . Заметим, что каждый элемент в X∖L потерял хотя бы одно решающее сравнение. Теперь у противника есть стратегия, которая заставляет каждый из k−1 элементов в L выиграть, по крайней мере, ⌈lgnk−1⌉сравнения, ни один из которых имеет решающее значение дляX∖L. Добавляя оставшиесяn−kкритических сравнений дляX∖Lвы получаете нижнюю границу. Для деталей, пожалуйста, прочитайте следующее, отлично,отмечаетДжефф Эриксон.
crucial comparison for $y$
: сравнения где y < z ≤ x ∗ или x ∗ ≤ z < y и x ∗ - целевой элемент. Что если мы не знаем отношения между z и x ∗, когда проводятся эти сравнения? У нас здесь есть оракул ? Или мы всезнающие с полной информацией (даже будущей информацией в листе)?