Я думал об алгоритмах сортировки в программном обеспечении и возможных способах преодоления O(nlogn)
препятствий. Я не думаю, что с практической точки зрения можно сортировать быстрее, поэтому, пожалуйста, не думайте, что я это делаю.
С учетом сказанного, похоже, что почти для всех алгоритмов сортировки программное обеспечение должно знать положение каждого элемента. Что имеет смысл, иначе как он узнает, где разместить каждый элемент в соответствии с некоторыми критериями сортировки?
Но когда я скрестил это мышление с реальным миром, центрифуга понятия не имела, в каком положении находится каждая молекула, когда она «сортирует» молекулы по плотности. На самом деле, его не волнует положение каждой молекулы. Однако он может отсортировать триллионы и триллионы предметов за относительно короткий период времени из-за того, что каждая молекула следует законам плотности и гравитации, что заставило меня задуматься.
Можно ли с некоторыми накладными расходами на каждом узле (какое-то значение или метод, прикрепленный к каждому из узлов) «принудительно» упорядочить список? Что-то вроде центрифуги, где только каждый элемент заботится о своем относительном положении в пространстве (по отношению к другим узлам). Или это нарушает какое-то правило вычислений?
Я думаю, что один из важных моментов, затронутых здесь, - это квантово-механические эффекты природы и то, как они применяются параллельно ко всем частицам одновременно.
Возможно, классические компьютеры по своей сути ограничивают сортировку областью O(nlogn)
, где, как квантовые компьютеры, могут преодолевать этот порог в O(logn)
алгоритмах, действующих параллельно.
Утверждение о том, что центрифуга, по сути, представляет собой сортировку с параллельными пузырьками, кажется правильным, что имеет временную сложность O(n)
.
Думаю, следующая мысль заключается в том, что если природа может сортировать O(n)
, то почему компьютеры?