Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Алгоритмы / Сортировка /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


8  История
8  Алгоритмы
8  Анализ
8  Программы для строк
8  Более сложные алгоритмы поиска
8  Заключение
8  Приложение
8  Литература
8  Глоссарий
Быстрые алгоритмы сортировки и поиска строк - Программирование от RIN.RU
Быстрые алгоритмы сортировки и поиска строк

Раздел 2 посвящен алгоритму быстрой сортировки Хоара [9] и бинарным деревьям поиска. Мы подчеркиваем хорошо известный изоморфизм, связывающий эти два подхода, и подытоживаем основные известные факты.


Алгоритмы и структуры данных для составных ключей представлены в разделе 3. Алгоритм быстрой сортировки (Multikey Quicksort) упорядочивает множество из n векторов по k компонент каждый. Как и обычный алгоритм быстрой сортировки, он делит данные на множества с ключами, большими или равными заданному значению; как и поразрядная сортировка, он переходит к следующему полю ключа, когда выясняется, что данное поле ключа текущего элемента равно этому значению. Для краткости часто упоминание о ключе опускается и говорится просто о больших, меньших и равных элементах сортируемого множества. Изоморфной структурой является троичное дерево поиска, каждый узел которого представляет разбиение подмножества векторов расщепляющим значением и тремя указателями: один к элементам, меньшим расщепляющего значения, другой - к большим (как в бинарном дереве поиска), а третий - к равным, у них потом сравниваются последующие поля ключа (как в борах). Как правило, применяемые структуры и методы стараются изложить на высоком теоретическом уровне, далеком от практических приложений. Приведенная здесь простая схема делает очевидной реализацию алгоритма.


Алгоритмы анализируются в разделе 4. Большая часть результатов оказывается новым изложением известных фактов.


В разделе 5 описаны эффективные программы на Си, реализующие эти алгоритмы. Первая программа может конкурировать с наиболее эффективными из известных программ сортировки строк. Вторая программа предлагает реализацию работы с таблицей имен, более быструю, чем хеширование, которое принято считать самым эффективным подходом для подобных задач. Предложенная реализация таблицы имен является намного более эффективной по расходу памяти, чем деревья, и поддерживает более продвинутый поиск.


Во многих прикладных программах сортировки алгоритм быстрой сортировки основывается на абстрактной операции сравнения, а при поиске применяют хеширование или бинарные деревья. При этом не учитываются преимущества, даваемые свойствами символьных ключей, которые широко используются на практике. Наши алгоритмы предлагают естественный и элегантный способ адаптации классических алгоритмов к этому важному классу приложений.


В разделе 6 мы обращаемся к более трудным задачам символьного поиска. Запросы поиска частичных совпадений допускают произвольные, 'не имеющие значения', символы (например, образцу 'so.a', соответствуют слова soda и sofa). Основной результат в этом разделе - это реализация алгоритма поиска частичных совпадений Ривеста (Rivest) в троичном дереве и эксперименты по исследованию его эффективности. Запросы 'ближайших соседей' выдают все слова, расстояние Хемминга которых от запрашиваемого слова не превосходит заданного (например, мы может искать все слова, расстояние которых от слова soda не превосходит< 2). Мы даем новый алгоритм поиска ближайших соседей в строках, представляем простые реализации на Си, и описываем результаты экспериментов по исследованию их эффективности.


Выводы и итоги - раздел 7.






SpeedSIP значительно снижает расходы на телефонную связь и сервисы:
  • бесплатные звонки внутри сети,
  • выгодные международные и междугородные звонки,
  • СМС по всему миру,
  • покупка прямого номер любой страны,
  • видеосвязь и видеоконференции.


  • В этом разделе :

    8  История
    Алгоритм быстрой сортировки QuickSort - это классический алгоритм декомпозиции.

    8  Алгоритмы
    Подобно тому, как быстрая сортировка изоморфна бинарным деревьям поиска, поразрядная сортировка изоморфна цифровым деревьям поиска

    8  Анализ
    Мы начнем с троичных деревьев поиска, а затем применим полученные результаты к быстрой сортировке по составным ключам.

    8  Программы для строк
    В основе быстрой сортировки и троичных деревьев поиска лежат добрые старые идеи, позволяющие построить теоретически эффективные алгоритмы.

    8  Более сложные алгоритмы поиска
    Теперь мы обратимся к двум алгоритмам, которые еще не анализировались с теоретической точки зрения.

    8  Заключение
    В разделах 3 и 4 использованы старые методы для единообразного представления и анализа быстрой сортировки и троичных деревьев поиска при работе с составными ключами. В следующих разделах описаны соответствующие коды.

    8  Приложение


    8  Литература


    8  Глоссарий


    8  История
    8  Алгоритмы
    8  Анализ
    8  Программы для строк
    8  Более сложные алгоритмы поиска
    8  Заключение
    8  Приложение
    8  Литература
    8  Глоссарий

     
      
      
        Copyright ©  RIN 2003 - 2004      * Обратная связь