示例#1
0
class testAStar(unittest.TestCase):
    def setUp(self):
        self.graph1 = createGraphFromString("#########\n#[email protected]#\n#########\n")
        self.graph2 = createGraphFromString("########################\n#[email protected].#\n######################.#\n#d.....................#\n########################\n")
        self.graph3 = createGraphFromString("########################\n#...............b.C.D.f#\n#.######################\n#[email protected]#\n########################\n")
        self.graph4 = createGraphFromString("#################\n#i.G..c...e..H.p#\n########.########\n#j.A..b...f..D.o#\n########@########\n#k.E..a...g..B.n#\n########.#########l.F..d...h..C.m#\n#################\n")
        self.graph5 = createGraphFromString("########################\n#@..............ac.GI.b#\n###d#e#f################\n###A#B#C################\n###g#h#i################\n########################\n")
        self.instance1 = Instance(self.graph1)
        self.instance1.updateTokens()
        self.instance2 = Instance(self.graph2)
        self.instance2.updateTokens()
        self.instance3 = Instance(self.graph3)
        self.instance3.updateTokens()
        self.instance4 = Instance(self.graph4)
        self.instance4.updateTokens()
        self.instance5 = Instance(self.graph5)
        self.instance5.updateTokens()
        self.instance1.listPositions()
        self.instance2.listPositions()
        self.instance3.listPositions()
        self.instance4.listPositions()
        self.instance5.listPositions()

    def testCreateGraphFromString(self):
        self.assertEqual(len(self.graph1), 3)
        self.assertEqual(len(self.graph1[0]), 9)
        self.assertEqual(len(self.graph2), 5)
    

    def testValidatePath(self):
        pass
        #self.assertEqual(validatePath(self.paths1), False)
        
    def testGenerateAllNodes(self):
       self.assertEqual(len(generateAllNodes(self.instance1.generateAllPossiblePath())), 1)
       self.assertEqual(len(generateAllNodes(self.instance2.generateAllPossiblePath())), 1)

    def testNodeWeight(self):
        node = Node("aA")
        node.weight(self.instance1)

    def testMinNumberOfSteps1(self):
        self.assertEqual(minNumberOfSteps(self.instance1), 8)
        self.assertEqual(minNumberOfSteps(self.instance2), 86)
        self.assertEqual(minNumberOfSteps(self.instance3), 132)
示例#2
0
    for n in newNodes:
        path = n.path()
        w = deepSearch(n, copy.deepcopy(instance))
        children.append(w)

    if children:
        weight += min(children)

    return weight


if __name__ == "__main__":
    # Graph example:#########
    #[email protected]#
    #########

    graph = createGraphFromString("#########\n#[email protected]#\n#########\n")
    # An instance contains useful information of a search
    # - Graph
    # - Current Position
    # - Key found
    # - Number of step taken
    # - All available keys and doors for the current position
    instance = Instance(graph)

    # Find all available keys and doors and store it in the first instance
    instance.updateTokens()
    instance.listPositions()
    minNumberOfSteps(instance)