Changeset 906:17f31d280385 in lemon-0.x for src/hugo/bin_heap.h
- Timestamp:
- 09/23/04 17:05:20 (20 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1216
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/hugo/bin_heap.h
r901 r906 1 // -*- C++ -*- // 2 3 /* FIXME: Copyright ... 4 * 5 * This implementation is heavily based on STL's heap functions and 6 * the similar class by Alpar Juttner in IKTA... 1 /* -*- C++ -*- 2 * src/hugo/bin_heap.h - Part of HUGOlib, a generic C++ optimization library 3 * 4 * Copyright (C) 2004 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 5 * (Egervary Combinatorial Optimization Research Group, EGRES). 6 * 7 * Permission to use, modify and distribute this software is granted 8 * provided that this copyright notice appears in all copies. For 9 * precise terms see the accompanying LICENSE file. 10 * 11 * This software is provided "AS IS" with no warranty of any kind, 12 * express or implied, and with no claim as to its suitability for any 13 * purpose. 14 * 7 15 */ 8 9 /******10 *11 * BinHeap<ItemType, PrioType, ItemIntMap, [PrioCompare]>12 *13 * Ez az osztaly item-prioritas parok tarolasara alkalmas binaris kupacot14 * valosit meg.15 * A kupacban legfolul mindig az a par talalhato, amiben a prioritas a16 * legkisebb. (Gondolj a Dijkstra pont-tavolsag kupacara; igazabol ahhoz17 * lett keszitve...)18 *19 * Megjegyzes: a kupacos temakorokben a prioritast kulcsnak szoktak nevezni,20 * de mivel ez zavaro tud lenni a property-map-es kulcs-ertek szohasznalata21 * miatt, megprobaltunk valami semleges elnevezeseket kitalalni.22 *23 * A hasznalatahoz szukseg van egy irhato/olvashato property_map-re, ami24 * az itemekhez egy int-et tud tarolni (ezzel tudom megkeresni az illeto25 * elemet a kupacban a csokkentes es hasonlo muveletekhez).26 * A map-re csak referenciat tarol, ugy hogy a kupac elete folyan a map-nek27 * is elnie kell. (???)28 *29 * Ketfele modon hasznalhato:30 * Lusta mod:31 * set(Item, Prio) metodussal pakolunk a kupacba,32 * aztan o majd eldonti, hogy ez az elem mar benne van-e es ha igen, akkor33 * csokkentettunk-e rajta, vagy noveltunk.34 * Ehhez nagyon fontos, hogy az atadott property map inicializalva legyen35 * minden szobajovo kulcs ertekre, -1 -es ertekkel!36 * Es ilyen esetben a kulcsokrol lekerdezheto az allapotuk a state37 metodussal:38 * (nem jart meg a kupacban PRE_HEAP=-1, epp a kupacban van IN_HEAP=0,39 * mar kikerult a kupacbol POST_HEAP=-2).40 * Szoval ebben a modban a kupac nagyjabol hasznalhato property_map-kent, csak41 * meg meg tudja mondani a "legkisebb" prioritasu elemet. De csak nagyjabol,42 * hiszen a kupacbol kikerult elemeknek elvesz az ertekuk...43 *44 * Kozvetlen mod:45 * push(Item, Prio) metodussal belerakunk a kupacba (ha az illeto kulcs mar46 * benn volt, akkor gaz).47 * increase/decrease(Item i, Prio new_prio) metodusokkal lehet48 * novelni/csokkenteni az illeto elemhez tartozo prioritast. (Ha nem volt49 * megbenne a kupacban az illeto elem, vagy nem abba az iranyba valtoztattad50 * az erteket, amerre mondtad -- gaz).51 *52 * Termeszetesen a fenti ket modot ertelemszeruen lehet keverni.53 * Ja es mindig nagyon gaz, ha belepiszkalsz a map-be, amit a kupac54 * hasznal. :-))55 *56 *57 * Bocs, most faradt vagyok, majd egyszer leforditom. (Misi)58 *59 */60 61 16 62 17 #ifndef HUGO_BIN_HEAP_H … … 66 21 ///\file 67 22 ///\brief Binary Heap implementation. 23 ///\todo It should be documented. 68 24 69 25 #include <vector>
Note: See TracChangeset
for help on using the changeset viewer.