Share to: share facebook share twitter share wa share telegram print page

Halda (datová struktura)

Tento článek je o haldě jako stromové datové struktuře. O haldě jako paměťovém prostoru v počítačových programech pojednává článek Dynamická alokace paměti.

Halda (anglicky heap) je v informatice stromová datová struktura splňující tzv. vlastnost haldy: pokud je B potomek A, pak x(A) >= x(B). To znamená, že v kořenu stromu je vždy prvek s nejvyšším klíčem (klíč udává funkce x). Taková halda se pak někdy označuje jako max heap, halda s reverzním pořadím prvků se analogicky nazývá min heap. Díky této vlastnosti se haldy často používají na implementaci prioritní fronty. Efektivita operací s haldou je klíčová pro mnoho algoritmů.

Operace s haldou

  • INSERT - přidání nového prvku do haldy
  • DELETE MAX nebo DELETE MIN - vyjmutí kořenu v max heap nebo v min heap
  • DELETE(v) - smaže uzel „v“
  • MIN, MAX - vrátí minimální resp. maximální klíč v haldě
  • DECREASE KEY(v, okolik) - zmenšení klíče uzlu „v“ o hodnotu „okolik“
  • INCREASE KEY(v, okolik) - zvětšení klíče uzlu „v“ o hodnotu „okolik“
  • MERGE - spojení dvou hald do jedné nové validní haldy obsahující všechny prvky obou původních
  • MAKE - dostane pole N prvků a vytvoří z nich haldu

Popis haldy

Haldu bychom mohli tedy definovat jako datovou strukturu splňující dvě základní podmínky:

  • lokální podmínku na uspořádání - prvek reprezentující otce je menší než prvek reprezentovaný synem apod.
  • strukturální podmínku na stromy, ze kterých jsou vytvořené

Právě podle těchto podmínek se haldy rozdělují na d-regulární, Fibonacciho, Leftist a další (mohou se lišit jak lokální, tak strukturální podmínkou).

Jak již bylo naznačeno, rozlišujeme haldy Min-Heap a Max-Heap.

  • U Min-Heap jsou klíče dětí jednoho uzlu vždy větší než klíče svého otce. To způsobuje, že na kořenech stromu lze nalézt pouze prvek s minimálním klíčem.
  • Opačně je pro Max-Heap stanovena podmínka, že klíče dětí jednoho uzlu musí být vždy menší než klíče jejich otce. Zde se na kořeni stromu vždy nachází prvek s maximálním klíčem.
Příklady Min-Heap a Max-Heap
Min heap
Min heap
Max heap
Max heap

Matematicky se u obou variant jedná pouze o rozdíl v jejich opačném pořadí prvků. Protože je definice vzestupně i sestupně libovolná, je pouze otázkou interpretace, zda se v konkrétní implementaci jedná o Min-Heap nebo o Max-Heap.

Obousměrné haldy (Double heaps)

Často se stává, že halda má zobrazit podmínku v obou směrech. V tomto případě se jednoduše vytvoří haldy dvě a uspořádají se podle větší a menší relace. Taková struktura je pak označována jako Double heap nebo krátce Deap.

Při použití Double heaps je třeba dávat pozor na to, že ne každá implementace haldy si pro jednotlivé operace zachová svůj průběh. Například Fibonacciho haldy s konstantním amortizovaným průběhem podporují pouze decreaseKey pro snížení klíčů. Všeobecný changeKey pro změnu klíče, který je vyžadován v případě Double heap, potřebuje ale amortizovaně minimálně logaritmický čas.

Variantou hald, které splňují podmínku haldy pouze částečně, nebo odchylně jsou tzv. Min-Max-Heap. Jedná se o Double heap, které díky odchylné formě podmínky haldy mohou udržovat data pouze v jednom stromu.

Varianty haldy

Existuje mnoho druhů hald s rozdílným průběhem pro různé operace. Příklady hald:

Porovnání teoretických hranic složitostí pro jednotlivé varianty

U Pairing, binární a binomiální haldy jde o složitosti v nejhorším případě[1]. O amortizované složitosti u Fibonacciho a Leftist haldy. O(f) dává asymptotickou horní hranici a Θ(f) je asymptoticky přesná (až na multiplikativní konstantu) složitost. V tabulce předpokládáme použití Min Heap.

Operace Binární Binomiální Fibonacciho Pairing Leftist 2-3 Treap Beap
createHeap Θ Θ Θ Θ
findMin Θ Θ nebo Θ Θ Θ Θ Θ
deleteMin Θ Θ Θ Θ Θ Θ Θ Θ
insert Θ Θ Θ Θ Θ nebo Θ Θ Θ Θ
decrease-key Θ Θ Θ Θ Θ nebo Θ Θ
merge Θ Θ Θ Θ Θ

Využití haldy

Halda má široké spektrum využití a patří mezi oblíbené datové struktury pro mnoho aplikací.

  • Heapsort: řadicí algoritmus.
  • Výběrový algoritmus: Hledání minima, maxima nebo obou, mediánu nebo dokonce jakéhokoli k-prvku (to sice lze, ale je to pomalé) a může být prováděno dynamicky.
  • implementace Dijkstrova algoritmu - využití jakékoli haldy, ale využití Fibonacciho haldy dává pro řídké grafy lepší časovou složitost.
  • implementace Jarníkova algoritmu
  • Prioritní fronty: využití haldy pro stanovení front úkolů například u serverů nebo provozních systémů
  • Hladové algoritmy: halda představuje ideální datovou strukturu pro tzv. hladové algoritmy, které se řídí lokálními optimalizovanými rozhodnutími.

Implementace haldy

Standard Template Library jazyka C++ poskytuje algoritmy make_heap, push_heap a pop_heap pro binární haldy, které pracují na iterátorech s náhodným přístupem.

Implementace binární haldy

Binární haldy mohou být implementovány jednoduše pomocí pole.

Reprezentace Bin. haldy polem

První nebo poslední prvek bude obsahovat kořen. Následující dva prvky pole obsahují jeho potomky. Následující čtyři obsahují další čtyři potomky předchozích dvou potomků, atd. A tak potomci uzlu na pozici n budou na pozici 2n a 2n+1 v polích indexovaných od jedničky nebo 2n+1 a 2n+2 v polích indexovaných od nuly. Vyvažování haldy je prováděno záměnou prvků, které nejsou umístěny ve správném pořadí. Tak, jako můžeme sestavit haldu z pole bez využití další paměti (například pro uzly), heapsort může být také použít pro třídění pole na místě. Další výhoda haldy v některých aplikacích je, že sestavení hald může být prováděno v lineárním čase použitím Tarjanova algoritmu.

Poznámky

  1. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms. MIT Press / McGraw-Hill.

Externí odkazy

Read other articles:

Alessandro Longhi, Ritratto di Carlo Lodoli, olio su tela, anni '60 del XVIII sec., Gallerie dell'Accademia, Venezia Carlo Lodoli al secolo Cristoforo Ignazio Antonio (Venezia, 28 novembre 1690 – Padova, 27 ottobre 1761) è stato un religioso e teorico dell'architettura italiano della Repubblica di Venezia. La sua opera anticipò il concetto moderno di funzionalismo. È a volte chiamato il Socrate dell'architettura poiché tutti i suoi scritti sono andati perduti e le sue teorie sono note s...

 

Галка Світлана Валентинівна Дата народження 20 квітня 1976(1976-04-20) (47 років)Місце народження Гаврилів-Ямd, Ярославська область, РРФСР, СРСРГромадянство  СРСР РосіяAlma mater Ярославський державний театральний інститутdПрофесія акторка, журналістка, співачкаIMDb ID 6635211...

 

Großenehrich Stadt und Landgemeinde Greußen Koordinaten: 51° 15′ N, 10° 50′ O51.24944444444410.832222222222275Koordinaten: 51° 14′ 58″ N, 10° 49′ 56″ O Höhe: 275 m ü. NHN Postleitzahl: 99718 Vorwahl: 036370 Am Anger Altes Portal aus den 1670er-Jahren Großenehrich ist ein Ortsteil der Stadt und Landgemeinde Greußen im thüringischen Kyffhäuserkreis. Inhaltsverzeichnis 1 Geografie 1.1 Lage 2 Geschichte 2.1 F...

Pop culture website CBRScreenshot of CBR main page from August 26, 2023Type of sitePop CultureAvailable inEnglishHeadquartersSaint-Laurent, QuebecOwnerValnet Inc.Created byJonah WeilandURLwww.cbr.comLaunched1995 (1995)Current statusOnline CBR, formerly Comic Book Resources, is a news website covering movies, television, anime, video games and comic book–related news and discussion. History CBR was founded by Jonah Weiland in 1995 as a development of the Kingdom Come Mess...

 

Pour un article plus général, voir Wydad Athletic Club (football). Parcours footballistique international du WACMatchs en coupes africainesC1 (Ligue des champions de la CAF) (16 participation)Années 1987, 1991, 1992, 1993, 1994, 2007, 2011, 2016, 2017, 2018, 2018/19, 2019/20, 2020/21, 2021/22, 2022/23, 2023/24C2 (Coupe d'Afrique des vainqueurs de coupe) (3 participation)Années 1998, 2002, 2003C3 (Coupe de la confédération) (5 participations)Années 1999, 2004, 2007, 2012, 2013Supercoupe...

 

後桜町天皇 御歴代百廿一天皇御尊影より第117代天皇 在位期間1762年9月15日 - 1771年1月9日宝暦12年7月27日 - 明和7年11月24日即位礼 1763年12月31日(宝暦13年11月27日)大嘗祭 1764年11月30日(明和元年11月8日)元号 宝暦明和時代 江戸時代征夷大将軍 徳川家治先代 桃園天皇次代 後桃園天皇誕生 1740年9月23日(元文5年8月3日)崩御 1813年12月24日(文化10年閏11月2日)陵所 月輪陵追号

Albatros Superfosfaatfabrieken is de naam van een door fusie ontstane maatschappij die superfosfaat en zwavelzuur produceerde. Voorgeschiedenis De productie van superfosfaat begon in Nederland in 1875, toen Salomonson in Capelle aan den IJssel een kleinschalige superfosfaatfabriek bouwde. Deze fabriek werd in 1895 omgedoopt in Centrale Guanofabrieken (CGF). Deze stelde in 1904 en 1910 zwavelzuurfabrieken in werking. In 1882 werd deze gevolgd door Coenen & Schoenmakers te Uden en door Van ...

 

此生者传记没有列出任何参考或来源。 (2010年11月23日)请协助補充可靠来源,针对在世人物的无法查证的内容将被立即移除。 一色紗英女演员本名畠山紗英国籍 日本出生 (1977-04-29) 1977年4月29日(46歲)日本東京都杉並区职业女演員教育程度東海大學附屬望星高等學校畢業配偶サーフェン智出道日期1991年出道作品学校へ行こう!代表作品藏(1995年)活跃年代1991年至今经纪公

 

Ochil KadyrovNama asliОчил КадыровLahir1910Oblast Samarkand, Kekaisaran RusiaMeninggal13 Maret 1945Pengabdian Uni SovietDinas/cabangTentara MerahLama dinas1941–1945Perang/pertempuranPerang Dunia II Operasi Bagration Serangan Bobruysk Serangan Lublin-Brest PenghargaanPahlawan Uni SovietOchil Kadyrov (Rusia: Очил Кадыров; 1910 – 13 Maret 1945) adalah seorang prajurit Tentara Merah berdarah Uzbek dan Pahlawan Uni Soviet anumerta. Kadyrov secara anumerta dianug...

غارة مطار المزة 1973 جزء من حرب أكتوبر معلومات عامة التاريخ 13 أكتوبر 1973 الموقع مطار المزة العسكري، قرب المزة، ريف دمشق33°28′41″N 36°13′29″E / 33.4781°N 36.2248°E / 33.4781; 36.2248  النتيجة نصر إسرائيلي المتحاربون  إسرائيل  سوريا القوة 8 طائرات إف-4 فانتومطائرتي إيه-4 سكاي هوك4...

 

Term used as a marketing incentive for products Deluxe edition and Limited edition redirect here. For the Son Seals album, see Deluxe Edition (album). For other uses, see Limited Edition (disambiguation) and Special edition (disambiguation). Numbering edition of 1,200 Collecting Collectable Antique Antiquities Terms Ephemera Premium Prize Souvenir Special edition Topics List of collectables List of hobbies vte The terms special edition, limited edition, and variants such as deluxe edition, or...

 

Este artículo o sección necesita referencias que aparezcan en una publicación acreditada.Este aviso fue puesto el 30 de junio de 2020. Escudo de Caso. El escudo de Caso es un símbolo representativo del concejo español del mismo nombre, situado en la comunidad autónoma del Principado de Asturias. Dicho concejo ha usado diferentes escudos durante su historia. Y es como el escudo de armas de caso Descripción El que se usa en la actualidad es un escudo partido verticalmente. En la parte iz...

Form of anarchist organization Part of a series onPlatformism People Peter Arshinov Nestor Makhno Ida Mett Theory Anarchist communism Anti-authoritarianism Anti-capitalism Anti-imperialism Class consciousness Class struggle Collective action Federalism Free association Popular education Prefigurative politics Social insertion United front Organizations Current Common Struggle Federação Anarquista Gaúcha Federación Anarco-Comunista de Argentina Libertarian Communist Union Uruguayan Anarchi...

 

1952 American film by George Sidney ScaramoucheOriginal film posterDirected byGeorge SidneyWritten byRonald MillarGeorge FroeschelBased onScaramouche1921 novelby Rafael SabatiniProduced byCarey WilsonStarringStewart GrangerEleanor ParkerJanet LeighMel FerrerCinematographyCharles RosherEdited byJames NewcomMusic byVictor YoungProductioncompanyMetro-Goldwyn-MayerDistributed byLoew's, Inc.Release date June 27, 1952 (1952-06-27) Running time115 minutesCountryUnited StatesLanguageEn...

 

Jeff Louis Informasi pribadiTanggal lahir 8 Agustus 1992 (umur 31)Tempat lahir Port-au-Prince, HaitiTinggi 1,78 m (5 ft 10 in)Posisi bermain GelandangInformasi klubKlub saat ini NancyNomor 10Karier senior*Tahun Tim Tampil (Gol)2010–2012 Le Mans 31 (2)2012– Nancy 0 (0)Tim nasional2011– Haiti 2 (0) * Penampilan dan gol di klub senior hanya dihitung dari liga domestik dan akurat per 16 July 2012 Jeff Louis (lahir 8 Agustus 1992) adalah seorang pemain sepak bola ber...

Part of the Moroccan diaspora French -MoroccansTotal population1,500,000 (Moroccan origin) and [1][2][3] (433,026) Moroccan-born people[4]LanguagesFrench (Maghrebi French), Arabic (Moroccan Arabic, Jebli Arabic, Judeo-Moroccan Arabic, Hassaniya Arabic), Berber (Tashlhit, Tarifit, Central Atlas Tamazight), SpanishReligionMajority Muslim Judaism, and Mainly Christianity (mostly Catholic and Protestant minorities), Islam (mostly Sunni Islam) and other religions Ir...

 

Consejería de Agricultura, Ganadería, Pesca y Desarrollo Sostenible LocalizaciónPaís EspañaCoordenadas 37°22′09″N 5°59′09″O / 37.36916667, -5.98583333Información generalJurisdicción  AndalucíaTipo consejería de la Junta de AndalucíaSede Calle Tabladilla, s/n 41013 SevillaOrganizaciónDirección Carmen Crespo Díaz[1]​ (Consejera)Depende de Junta de AndalucíaEmpleados 4.721 (2020) Consejería de Agricultura, Ganadería, Pesca y Desarrollo So...

 

Annual LGBT event in Amsterdam Amsterdam Canal Parade (2019) Amsterdam Gay Pride in 2008. One of the decorated boats participating in the 2013 Canal Parade of the Amsterdam Gay Pride. Amsterdam Gay Pride 2008 Hans Klok and Gerard Joling on a parade boat. This image shows a large number of individuals that attend the festival. Amsterdam Pride, Amsterdam Gay Pride or Pride Amsterdam is a citywide queer-festival held annually at the center of Amsterdam during the first weekend of August. The fes...

Eastern culture For other uses, see Eastern culture (disambiguation). Confucius's teachings and philosophy has influenced many Eastern cultures, known as Confucianism.Gautama Buddha, the founder of Buddhism. Born in modern-day Nepal, his teachings are venerated by numerous religions and communities in countries within East, Southeast and South Asia.The Garuda, a Hindu demigod and divine creature mentioned in the Hindu, Buddhist and Jain faiths. It is a part of the state insignia of India, Ind...

 

Umayyad provincial governor (672–720) Yazid ibn al-MuhallabUmayyad governor of Khurasan[a]In office702–704MonarchAbd al-Malik (r. 685–705)Preceded byAl-Muhallab ibn Abi SufraSucceeded byAl-Mufaddal ibn al-MuhallabUmayyad governor of Iraq[b]In office715–717MonarchSulaymanPreceded byYazid ibn Abi Kabsha al-Saksaki Personal detailsBorn672 or 673Died24 August 720Aqr, near BabylonChildrenKhalid Mukhallad Mu'awiyaParent(s)Al-Muhallab ibn Abi Sufra (father) Daughter of ...

 
Kembali kehalaman sebelumnya