/ / долната граница на сложността на сложността на времето - c ++, сложността на времето, big-o

долната граница на сложността на сложността на времето - c ++, сложността на времето, big-o

Възможно ли е да докажете, че долната граница евремевият сложност на всеки алгоритъм за търсене на сравнителен анализ за подредени списъци съществува? С други думи, има ли някакъв алгоритъм, който взима подреден списък и елемент и извежда индекса на елемента в списъка (ако се появи), трябва да предприеме определен брой стъпки?

Отговори:

1 за отговор № 1

Приетият начин да направите конкретния алгоритъм, който предложихте, е двоично търсене https://en.wikipedia.org/wiki/Binary_search_algorithm, което има средна сложност на времето на O (log N). Както е отбелязано в коментар по-горе, този алгоритъм и много други харесват в едно стъпало при перфектни обстоятелства.

Като цяло, доказването, че алгоритъмът е оптимизиран е труден проблем, който включва или класифициране на алгоритъма, или привличане към тривиалност. Повече информация можете да намерите тук:

https://cstheory.stackexchange.com/questions/1284/problems-that-can-be-used-to-show-polynomial-time-hardness-results

Тук:

https://cstheory.stackexchange.com/questions/2038/what-techniques-are-used-for-proving-algorithms-optimal

И тук:

https://www.quora.com/Is-there-any-known-way-to-prove-that-an-algorithm-is-optimal