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.
