コード例 #1
0
ファイル: test-pqueue.py プロジェクト: Sieabah/cmsc-471
    def test_queue_push(self):
        A = SearchNode('A')

        queue = SearchPriorityQueue()

        result = queue.push(A)

        self.assertTrue(result)
        self.assertEquals(len(queue), 1)

        queue.push(A)
        self.assertEquals(len(queue), 2)
コード例 #2
0
ファイル: test-pqueue.py プロジェクト: Sieabah/cmsc-471
    def test_queue_pop(self):
        A = SearchNode('A')
        B = SearchNode('B')

        queue = SearchPriorityQueue()

        queue.push(A)
        queue.push(B)

        self.assertEquals(len(queue), 2)

        node = queue.pop()

        self.assertEquals(len(queue), 1)
        self.assertIsInstance(node, SearchNode)
        self.assertEquals(node.name, 'A')
コード例 #3
0
ファイル: test-pqueue.py プロジェクト: Sieabah/cmsc-471
    def test_advanced_pushpop(self):
        A = SearchNode('A')

        queue = SearchPriorityQueue()

        result = queue.push(A)

        self.assertTrue(result)
        self.assertEquals(len(queue), 1)

        queue.push(A)
        self.assertEquals(len(queue), 2)

        queue.pop()
        queue.push(A)

        self.assertEquals(len(queue), 1)

        # Should pop other A and not return
        result = queue.pop()
        self.assertIsNone(result)
        self.assertEquals(len(queue), 0)
コード例 #4
0
ファイル: Algorithms.py プロジェクト: UMBC-AI/AIProject1
    def uniform(self, start: str, end: str):
        """
        Uniform search
        :param start: node name
        :param end: node name
        :return:
        """
        start = self.__nodes[start]
        end = self.__nodes[end]

        # Create priority queue
        pqueue = SearchPriorityQueue()

        # Do a basic search using priority queue
        node = SearchAlgo.basic_search(pqueue, start, end)

        # Build path
        if node:
            path = pqueue.get_path(node)
            # Find path from last node
            return path
        else:
            return []
コード例 #5
0
    def uniform(self, start: str, end: str):
        """
        Uniform search
        :param start: node name
        :param end: node name
        :return:
        """
        start = self.__nodes[start]
        end = self.__nodes[end]

        # Create priority queue
        pqueue = SearchPriorityQueue()

        # Do a basic search using priority queue
        node = SearchAlgo.basic_search(pqueue, start, end)

        # Build path
        if node:
            path = pqueue.get_path(node)
            # Find path from last node
            return path
        else:
            return []
コード例 #6
0
ファイル: test-pqueue.py プロジェクト: Sieabah/cmsc-471
    def test_placed_by(self):
        A = SearchNode('A')
        B = SearchNode('B')
        C = SearchNode('C')
        D = SearchNode('D')

        queue = SearchPriorityQueue()

        A.add_link(B, 40)
        A.add_link(C, 1)
        A.add_link(D, 20)

        queue.push(A)
        queue.push(B, A)
        queue.push(C, A)
        queue.push(D, A)

        node = queue.pop()

        self.assertIsNone(queue.placed_by(node.name))

        node = queue.pop()

        # C has shortest distance,
        self.assertEquals(node.name, 'C')
        self.assertEquals(queue.placed_by(node.name).name, 'A')