Я думав про сортування алгоритмів у програмному забезпеченні та можливі способи подолання O(nlogn)
перешкод. Я не думаю, що це можливо, щоб сортувати швидше в практичному сенсі, тому, будь ласка, не думайте, що я це роблю.
З огляду на це, схоже, майже при всіх алгоритмах сортування програмне забезпечення повинно знати положення кожного елемента. Що має сенс, інакше, як би він знав, куди розмістити кожен елемент відповідно до деяких критеріїв сортування?
Але коли я перетнув це мислення з реальним світом, центрифуга не уявляє, в якому положенні знаходиться кожна молекула, коли вона «сортує» молекули за щільністю. Насправді його не хвилює положення кожної молекули. Однак він може сортувати трильйони за трильйонами предметів за відносно короткий проміжок часу, завдяки тому, що кожна молекула слідує законам щільності та гравітації - що змусило мене замислитися.
Чи можна було б із накладними витратами на кожному вузлі (якесь значення або метод, прикріплений до кожного з вузлів) "примусити" порядок списку? Щось на зразок центрифуги, де лише кожен елемент дбає про своє взаємне розташування в просторі (по відношенню до інших вузлів). Або це порушує якесь правило обчислень?
Я думаю, що одним із найбільших моментів, викладених тут, є квантово-механічні ефекти природи та те, як вони застосовуються паралельно до всіх частинок одночасно.
Можливо, класичні комп'ютери за своєю суттю обмежують сортування в області O(nlogn)
, де як квантові комп'ютери можуть переходити цей поріг в O(logn)
алгоритми, які діють паралельно.
Те, що центрифуга, як правило, паралельний сорт бульбашок, здається правильним, що має часову складність O(n)
.
Я думаю, наступна думка полягає в тому, що якщо природа може сортувати O(n)
, чому не можуть комп’ютери?