05.07.2011

GNU libavl

* Source text URL: http://www.stanford.edu/~blp/avl/


Двайковыя дрэвы забяспечваюць O (LG п) прадукцыйнасць у сярэднім для важных аперацый, такіх, як пункт устаўкі, выдалення і пошуку працы. Збалансаваныя дрэвы даюць O (LG п) нават у горшым выпадку.

GNU libavl з’яўляецца найбольш поўнай, добра дакументаванай калекцыяй двайковага дрэва пошуку і збалансаванага дрэва бібліятэчнай падпраграмы ў любым месцы. Ён падтрымлівае гэтыя віды дрэў:

Звычайная бінарныя дрэвы:

Двайковыя дрэвы

AVL дрэвы

Чырвона-чорныя дрэвы

Рэзьбавыя бінарныя дрэвы:

Рэзьбавыя дрэвы двайковага пошуку

Рэзьбавыя дрэвы AVL

Рэзьбавыя чырвона-чорныя дрэвы

Струменевыя справа разьбовыя бінарныя дрэвы:

Струменевыя справа разьбовыя бінарныя дрэвы пошуку

Струменевыя справа разьбовыя AVL дрэвы

Струменевыя справа разьбовыя чырвона-чорныя дрэвы

Двайковыя дрэвы з бацькамі паказальнікаў:

Двайковыя дрэвы пошуку з бацькамі паказальнікаў

AVL дрэвы з бацькамі паказальнікаў

Чырвона-чорныя дрэвы з бацькамі паказальнікаў

Наведайце анлайн HTML версію аб libavl.

Назва libavl з’яўляецца гістарычнай выпадковасцю: яна першапачаткова ажыццяўляцца толькі з AVL дрэвамі. Гэта назва можа змяніцца да чагосьці больш дарэчнага ў будучыні, напрыклад, “libsearch”. Вы павінны таксама чакаць, што гэтая старонка перайдзе на www.gnu.org калісьці ў няпэўным будучыні.

Версія 2.0

Версія 2.0 libavl была выпушчана 6 студзеня 2002. Гэта цалкам перапісаная ранняя версія, якая рэалізавана ў “пісьменным праграмаванні” моды, так, што ў дадатак да карыснай бібліятэкі, напісана і кніга, якая апісвае ў поўным аб’ёме алгарытмы бібліятэкі.

Версія 2.0.1 libavl была выпушчана 24 жніўня 2002 г. У ёй выпраўлены некаторыя памылкі друку ў тэксце і ўяўляецца HTML-фармат. Няма памылак у кодзе libavl, якія былі б зафіксаваны, таму што ніхто не паведамляў. У адрозненне ад 2.0 гэтая версія сумяшчальная з апошнімі рэлізамі Texinfo. dvipdfm, якая ў цяперашні час выкарыстоўваецца для вытворчасці PDF версіі.

Версія 2.0.2 libavl была выпушчана 28 снежня 2004. Яна выпраўляе памылку ў tavl_delete (), якую паведаміў Пётр Silhavy даўно. Гэта тое ж самае, што выправіць апублікаваныя тут памылкі раней. Гэты варыянт (зноў жа) працуе з апошнімі версіямі Texinfo, з выпраўленымі некалькімі памылкамі друку ў тэксце, і трохі паляпшае HTML-фармат.

Вы можаце спампаваць кнігу або адфарматаваны дыстрыбутыў, які дазволіць вам выкарыстоўваць бібліятэку ў сваіх праграмах. Вы таксама можаце выкарыстоўваць дыстрыбутыў зыходнага кода ў фармаце кнігі самастойна:

Выраўнаваная кніга:

Інтэрнэт HTML або спакаваны gzip архіў (1,7 Мб)

упакаваны gzip з фарматам PDF (1,4 MB)

упакаваны gzip PostScript (746 Кб)

упакаваных gzip звычайны тэкст (224 Кб)

PostScript і PDF версіі 432 старонкі памерам ЗША ліст. Тэкставая версія уяўляе 26968 радкоў, або каля 409 старонак, на 66 радкоў на старонцы.

Крыніца распаўсюджвання ў якасці упакаванага gzip (1,4 MB)

Агляд ідэі, якая ляжыць у libavl 2.0 (гл. стэндавы даклад), зрабіў 6 красавіка 2001 года ва Універсітэце штата Мічыган. Гэтая прэзентацыя таксама даступна ў зыходных PostScript.

Старыя версіі

Версія 1.4.0 з’яўляецца папярэднікам да 2.0. Яна рэалізуе толькі наступныя віды дрэў:

AVL дрэва.

Рэзьбавае дрэва AVL.

Струменевае справа разьбовае AVL дрэва.

Чырвона-чорнае дрэва.

Версія 1.4.0 больш актыўна не развіваецца, але любое паведамленне аб памылцы, якая ўплывае на яго паводзіны, будзе выпраўлена. Зыходны код для libavl 1.4.0 можа быць атрыманы з ftp://ftp.gnu.org/pub/gnu/avl.

Іншыя рэсурсы AVL

Некалькі дрэў AVL бібліятэкі даступны ў сетцы. Ніжэй прыведзены спіс тых, што я лічу добра напісанымі, і ў цэлым, карыснымі і ў іншых кодах. Дайце мне ведаць, якіх-небудзь іншыя коды, і я дадам іх у спіс пасля праверкі.

kazlib. Гэта чырвона-чорнае дрэва рэалізацыі па Каз Kylheku. Я дадаў спіс пакетаў у ім тут, таму што я заўсёды не памятаю, дзе яна ёсць, і трэба шукаць яго. Бясплатныя ліцэнзіі.

libdict. Гэтая бібліятэка рэалізуе AVL і чырвона-чорныя дрэвы і некалькі іншых відаў слоўніка дадзеных структур. BSD-падобная ліцэнзія з рэкламай.

avlmap. Бібліятэкі ў C Філ Ховард, які забяспечвае зручную рэалізацыі для некалькіх тыпаў зменных і аб’ёмных дакументаў у HTML-фармаце. Вельмі вялікі код, напрыклад, ён таксама ўключае файл загалоўка, які складае 68 кілабайт. GNU Lesser General Public License.

glib. GTK+ ўключае ў сябе бібліятэкі імя бойкі, які неаптымізаваны рэкурсіўнай рэалізацыі Сі. GNU Lesser General Public License.

cprops. AVL дрэвы, чырвона-чорныя дрэвы, скошаныя дрэвы і многае іншае, у рэкурсіўнай рэалізацыі, прызначаныя для шматструменных прыкладанняў. GNU Lesser General Public License.

Python avllib. Ітэрацыеныя рэалізацыі, уключаючы ўсе звычайныя працэдуры. Хоць я не правяраў, але ён выглядае вельмі добра напісаным. Уключае Python прывязкі, а таксама некаторыя незвычайныя, але карысныя функцыі (RANK поле Кнута, напрыклад). BSD ліцэнзія без рэкламы.

avllib. Брэд Эпплтон у неаптымізаванай рэкурсіўнай рэалізацыі Сі. Распаўсюджваецца пад незвычайнай, у асноўным, свабоднай ліцэнзіяй.

libredblack. Даміян Ivereigh ў рэалізацыі чырвона-чорнага дрэва з алгарытмам Cormen, Лейзерсон, Рывест. Уключае ў сябе дакументацыю і прыклады. GNU Lesser General Public License.

AVL. Лёгкая рэкурсіўная рэалізацыя Даніэль Надзь, прызначана для ўбудавальнага выкарыстання. Рэалізуе толькі ўстаўкі, выдалення і пошук. GNU General Public License.

TAVL. Рэалізацыя разьбовых дрэў AVL Берт Х’юза. Гэта толькі агульнадаступныя рэалізацыі разьбовых збалансаваных дрэў, вядомыя мне, да таго ж адзін у GNU libavl. Грамадскі здабытак.

ubiqx. Дадзеныя Крыс Hertel структураў бібліятэкі, якая ўключае ў сябе звычайныя бінарныя дрэвы і AVL дрэвы, і пашыраецца выкарыстанне аб’ектна-арыентаванага праектавання на мове C. GNU Lesser General Public License.

Наступныя таксама AVL бібліятэкі, але не падыходзяць для прыведзенага вышэй спісу, таму што яны з’яўляюцца няпоўнымі або цяжка выкарыстоўваюцца ў іншым кодзе. У свой час я таксама пералічыў несвабодныя бібліятэкі тут, але я так рабіў больш не з-за цяперашняга вольнага багацця з іх:

Linux ядры. Ядро выкарыстоўвае рэкурсіўную рэалізацыю C у сваім ттар кодзе. GNU General Public License.

ok ok