Re: Минимаксная " сортировка"
- From
- Oleg I. Khovayko ()
- To
- Valentin Davydov
- Date
- 2003-01-10T17:10:16Z
- Area
- RU.ALGORITHMS
From: "Oleg I. Khovayko" <olegh@ncbi.nlm.nih.gov>
Valentin Davydov wrote:
>
> меньше, чем N. Тривиальный алгоритм прямого перебора линеен по N и
> квадратичен по K. Можно ли его как-нибудь ускорить?
Есть такое нехорошее подозрение, что существенно ускорить,
уйдя от K^2 - вряд ли получится.
Обьясняю почему.
Дело в том, что все более-менее быстрые алгоритмы сортировки,
использующие сравнение, исходят из транзитивности операций
"меньше/больше" (в обшем случае, эта операция определает порядок
следования элементов в выходном массиве).
To есть, предполагается, что если A < B, и
B < C, то следовательно, и A < C. Таким образом, экономится
сравнение A # C, что однако не мешает расположить результат
в правильном порядке.
В Вашем же случае сравнение явно нетранзитивно, и результат
текушего сравнения зависит от порядка выбора точек.
Пример: Есть точки:
1 2
3 4
Если в качестве начальной точки брать "1", то
выходной порядок будет 1432
Если же в качестве начальной точки брать "2", то
выходной порядок будет 2341
То есть порядок точек "34/43" зависит от предистории
выбора. Поэтому сравнение приходится делать по принципу
"каждый с каждым", то есть K^2.
Есть кое-какие идеи, как ускорить алгоритм,
отбросив часть сравниваемых точек, но тем не менее, уйти от K^2
все равно не получается.
Maло того - во всех этих идеях в той или иной мере присутствует
сортировка, или еще какая-либо "преклассификация" всех N точек.
Для K <<< N это не есть здорово. Но если все же интересно -
спрашивайте, будем думать (идеи покамест недооформившиеся)...
--
#include <best/regards.hpp>
Oleg I. KHOVAYKO
(301)435-5885 || WEB: http://olegh.spedia.net
--- ifmail v.2.15dev5
* Origin: National Center for Biotechnology Information (2:5020/400)