assoc-heaps: removing unused and uncompleted vocab.
							parent
							
								
									a4dcc12b98
								
							
						
					
					
						commit
						dbd3febbf6
					
				| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
! Copyright (C) 2008 Doug Coleman.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: help.markup help.syntax io.streams.string assocs
 | 
			
		||||
heaps.private ;
 | 
			
		||||
IN: assoc-heaps
 | 
			
		||||
 | 
			
		||||
HELP: <assoc-heap>
 | 
			
		||||
{ $values { "assoc" assoc } { "heap" heap } { "assoc-heap" assoc-heap } }
 | 
			
		||||
{ $description "Constructs a new " { $link assoc-heap } " from two existing data structures." } ;
 | 
			
		||||
 | 
			
		||||
HELP: <unique-max-heap>
 | 
			
		||||
{ $values { "unique-heap" assoc-heap } }
 | 
			
		||||
{ $description "Creates a new " { $link assoc-heap } " where the assoc is a hashtable and the heap is a max-heap. Popping an element from the heap leaves this element in the hashtable to ensure that the element will not be processed again." } ;
 | 
			
		||||
 | 
			
		||||
HELP: <unique-min-heap>
 | 
			
		||||
{ $values { "unique-heap" assoc-heap } }
 | 
			
		||||
{ $description "Creates a new " { $link assoc-heap } " where the assoc is a hashtable and the heap is a min-heap. Popping an element from the heap leaves this element in the hashtable to ensure that the element will not be processed again." } ;
 | 
			
		||||
 | 
			
		||||
{ <unique-max-heap> <unique-min-heap> } related-words
 | 
			
		||||
 | 
			
		||||
HELP: assoc-heap
 | 
			
		||||
{ $description "A data structure containing an assoc and a heap to get certain properties with better time constraints at the expense of more space and complexity. For instance, a hashtable and a heap can be combined into one assoc-heap to get a sorted data structure with O(1) lookup. Operations on assoc-heap may update both the assoc and the heap or leave them out of sync if it's advantageous." } ;
 | 
			
		||||
 | 
			
		||||
ARTICLE: "assoc-heaps" "Associative heaps"
 | 
			
		||||
"The " { $vocab-link "assoc-heaps" } " vocabulary combines exists to synthesize data structures with better time properties than either of the two component data structures alone." $nl
 | 
			
		||||
"Associative heap constructor:"
 | 
			
		||||
{ $subsections <assoc-heap> }
 | 
			
		||||
"Unique heaps:"
 | 
			
		||||
{ $subsections
 | 
			
		||||
    <unique-min-heap>
 | 
			
		||||
    <unique-max-heap>
 | 
			
		||||
} ;
 | 
			
		||||
 | 
			
		||||
ABOUT: "assoc-heaps"
 | 
			
		||||
| 
						 | 
				
			
			@ -1,11 +0,0 @@
 | 
			
		|||
! Copyright (C) 2008 Doug Coleman.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: assoc-heaps combinators heaps kernel tools.test ;
 | 
			
		||||
 | 
			
		||||
{ { { 0 "zero" } { 1 "one" } { 2 "two" } } } [
 | 
			
		||||
    <unique-min-heap>
 | 
			
		||||
    "two" 2 pick heap-push
 | 
			
		||||
    "zero" 0 pick heap-push
 | 
			
		||||
    "one" 1 pick heap-push
 | 
			
		||||
    heap-pop-all
 | 
			
		||||
] unit-test
 | 
			
		||||
| 
						 | 
				
			
			@ -1,29 +0,0 @@
 | 
			
		|||
! Copyright (C) 2008 Doug Coleman.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: accessors assocs hashtables heaps kernel ;
 | 
			
		||||
IN: assoc-heaps
 | 
			
		||||
 | 
			
		||||
TUPLE: assoc-heap assoc heap ;
 | 
			
		||||
 | 
			
		||||
C: <assoc-heap> assoc-heap
 | 
			
		||||
 | 
			
		||||
: <unique-min-heap> ( -- unique-heap )
 | 
			
		||||
    H{ } clone <min-heap> <assoc-heap> ;
 | 
			
		||||
 | 
			
		||||
: <unique-max-heap> ( -- unique-heap )
 | 
			
		||||
    H{ } clone <max-heap> <assoc-heap> ;
 | 
			
		||||
 | 
			
		||||
M: assoc-heap heap-push*
 | 
			
		||||
    pick over assoc>> key? [
 | 
			
		||||
        3drop f
 | 
			
		||||
    ] [
 | 
			
		||||
        [ assoc>> swapd set-at ] [ heap>> heap-push* ] 3bi
 | 
			
		||||
    ] if ;
 | 
			
		||||
 | 
			
		||||
M: assoc-heap heap-pop heap>> heap-pop ;
 | 
			
		||||
 | 
			
		||||
M: assoc-heap heap-peek heap>> heap-peek ;
 | 
			
		||||
 | 
			
		||||
M: assoc-heap heap-empty? heap>> heap-empty? ;
 | 
			
		||||
 | 
			
		||||
M: assoc-heap heap-size heap>> heap-size ;
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
Doug Coleman
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
Priority queue with fast insertion, removal of first element, and lookup of arbitrary elements by key
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
collections
 | 
			
		||||
		Loading…
	
		Reference in New Issue