Реальный пример экспоненциальной временной сложности
Я ищу интуитивный, реальный пример проблемы, которая требует (в худшем случае) экспоненциальной сложности времени для решения для разговора, который я даю.
вот примеры для других сложностей времени, которые я придумал (многие из них взяты из это так вопрос):
- O (1) - определение, является ли число нечетным или четным
- O (log N) - поиск слова в словаре (с помощью двоичного поиска)
- O (N) - чтение a книга
- O (N log N) - сортировка колоды игральных карт (с помощью сортировки слиянием)
- O (N^2) - Проверка, есть ли у вас все в списке покупок в вашей тележке
- O (бесконечность) - бросая монету, пока она не приземлится на головы
какие идеи?
4 ответов
- O (10^N): попытка сломать пароль, проверяя каждую возможную комбинацию (предполагая числовой пароль длины N)
п.з. почему ваш последний пример имеет сложность o(бесконечность) ? это линейный поиск O (N) .. в мире насчитывается менее 7 миллиардов человек.
решение задачи грубой силы и наивной n-queens.
вы должны разместить n ферзей на доске n * n без них, чтобы их взяли другие.
while there are untried configs,
go to next solution and
test it
предполагая, что каждая королева находится в данной строке, есть n возможностей для размещения королевы и n для (n-1) других королев (потому что повторяющиеся строки не проверяются).
следовательно, у вас есть o(n^n) сложность
Как насчет нахождения подмножества целых чисел в наборе, чтобы их сумма была обозначенным значением X?
Я считаю, что это имеет сложность O(2^(н/2))