Example #1
0
def astar(handle1, handle2):
    list_open = Treap() #Prioritätenwarteschlange
    list_closed = []

    # Initialisierung der Open List, die Closed List ist noch leer
    # (die Priorität bzw. der f-Wert des Startknotens ist unerheblich)
    list_open.insert(xx, 0) #Todo node

    # diese Schleife wird durchlaufen bis entweder
    # - die optimale Lösung gefunden wurde oder
    # - feststeht, dass keine Lösung existiert
    while not list_open.empty():
        # Knoten mit dem geringsten f-Wert aus der Open List entfernen
        currentNode = list_open.remove_min() #todo check for return

        # Der aktuelle Knoten soll durch nachfolgende Funktionen
        # nicht weiter untersucht werden, damit keine Zyklen entstehen
        list_closed.append(currentNode)

        # Wurde das Ziel gefunden?
        if currentNode == zielknoten:
            return list_closed

        # Wenn das Ziel noch nicht gefunden wurde: Nachfolgeknoten
        # des aktuellen Knotens auf die Open List setzen
        expandNode(currentNode)
    
    # die Open List ist leer, es existiert kein Pfad zum Ziel
    return None
Example #2
0
 def add(self, i):
     t = self.treap
     if t:
         from random import randint
         p = randint(0,100)
         self.treap = t.add(Treap, Treap(p,i))
     else:
         self.treap = Treap.make_treap(Treap, [i])
Example #3
0
class Node:
    predecessor = None
    tentative_g = None
    def __heuristic__(handle1, handle2):
        print("Not implemented!")
        #todo: Propinquity analysis
        #todo: last 200 tweets fetchen
        #      similiarity check using fasttext
    def heuristic():
        print("Not implemented!")
        #todo

    def __getFriends__():
        #todo

    def successors():
        #todo
    
list_open = Treap() #Prioritätenwarteschlange
list_closed = []

def astar(handle1, handle2):
    list_open = Treap() #Prioritätenwarteschlange
    list_closed = []

    # Initialisierung der Open List, die Closed List ist noch leer
    # (die Priorität bzw. der f-Wert des Startknotens ist unerheblich)
    list_open.insert(xx, 0) #Todo node

    # diese Schleife wird durchlaufen bis entweder
    # - die optimale Lösung gefunden wurde oder
    # - feststeht, dass keine Lösung existiert
    while not list_open.empty():
        # Knoten mit dem geringsten f-Wert aus der Open List entfernen
        currentNode = list_open.remove_min() #todo check for return

        # Der aktuelle Knoten soll durch nachfolgende Funktionen
        # nicht weiter untersucht werden, damit keine Zyklen entstehen
        list_closed.append(currentNode)

        # Wurde das Ziel gefunden?
        if currentNode == zielknoten:
            return list_closed

        # Wenn das Ziel noch nicht gefunden wurde: Nachfolgeknoten
        # des aktuellen Knotens auf die Open List setzen
        expandNode(currentNode)
    
    # die Open List ist leer, es existiert kein Pfad zum Ziel
    return None

# überprüft alle Nachfolgeknoten und fügt sie der Open List hinzu, wenn entweder
# - der Nachfolgeknoten zum ersten Mal gefunden wird oder
# - ein besserer Weg zu diesem Knoten gefunden wird
def expandNode(currentNode):
    for #successor of currentNode:
Example #4
0
def heightrandom():
    for i in range(2, 10, 2):
        L = [100 * random() for x in range((2**i) - 1)]
        BSTTree = BST()
        TreapTree = Treap()
        for x in L:
            BSTTree.insert(x)
            TreapTree.insert(x)
        print("Complete Tree would have height of", i - 1)
        print("Height of BST is: ", BSTTree.height())
        print("Height of Treap is: ", TreapTree.height())
Example #5
0
def solve(n, shifted):
    arr = [0 for _ in range(n)]
    #1~N까지의 숫자를 모두 저장하는 트립을 만든다.
    candidates = Treap()
    for i in range(n):
        candidates.insert(i + 1)
    #뒤에서부터 arr[]를 채워나간다.
    for i in range(n - 1, -1, -1):
        #후보 중 이 수보다 큰 수가 larger개 있다.
        larger = shifted[i]
        k = candidates.findKth(i + 1 - larger)
        arr[i] = k.key
        candidates.delete(k.key)

    return arr
 def __init__(self):
     self.treap = Treap()
Example #7
0
def test_removeMoreThanOneOccurence():
    t = Treap()
    t.insert("A")
    t.insert("A")
    t.remove("A")
    assert t.getOccurenceCount("A") == 1
Example #8
0
def test_makeEmptyTreap():
    t = Treap()
    assert t
Example #9
0
def test_removeWithOneOccurence():
    t = Treap()
    t.insert("A")
    t.remove("A")
    assert t.find("A") == False
Example #10
0
def test_testOccurenceCountMany():
    t = Treap()
    t.insert("A")
    t.insert("A")
    t.insert("A")
    assert t.getOccurenceCount("A") == 3
Example #11
0
def test_findKeyNotThere():
    t = Treap()
    t.insert("A")
    assert t.find("B") == False
Example #12
0
def test_findKeyThere():
    t = Treap()
    t.insert("A")
    assert t.find("A")
Example #13
0
def test_insertOne():
    t = Treap()
    assert t.insert("A")
Example #14
0
def get_nodes_from_vert(vert):
    nodes = []
    for node in vert.content:
        nodes.append(node)
    return nodes


nodes = [10, 13, 35, 64, 92, 1231, 1234, 5, 6, 45, 56, 67, 78, 89, 90]
keys = [1, 1, 5, 2, 3, 4, 6, 4, 10, 5, 6, 7, 8, 9, 10]

root_node = 0
root_key = 0

# Constructor test
tree = Treap()
tree.insert(root_node, root_key)

# insert function test
for i in range(len(nodes)):
    tree.insert(nodes[i], keys[i])
tree.print_tree()

# locate test
print(tree.locate(10).content)  # Single match
print(tree.locate(1).content)  # Multiple matches
print('\n')

# TreapVertex test
print(tree.root)
key_5 = tree.locate(5)