前沿导致非子后代
交叉边缘既不会导致祖先也不会导致后代
如果顶点通向另一个顶点,则第二个顶点是第一个顶点的子节点。因此,如果根据定义,顶点导致的任何东西是它的孩子,那么交叉边缘如何导致非后代呢?
如何选择来源? DFS算法如何知道哪里开始?
边缘类型是否取决于算法的起始位置?例如,如果算法在顶点A处开始并且在顶点Z处结束,则从Z到A的边缘将是后边缘。如果算法在Z处开始并在A处结束,那么它将是前沿。我的推理是否正确?每次运行时边缘的类型是否会发生变化?
答案 0 :(得分:2)
如果顶点通向另一个顶点,则根据定义,第二个顶点是第一个顶点的子节点。
没有;这里的“孩子”是指代表搜索空间的树,而不是“叠加”在其上以显示搜索顺序的图表。请参阅Wikipedia中的有用插图。
对于你的另一个问题也有类似的困惑。
选择来源以反映问题。它一直持续到您获得可接受的解决方案。
假设您正试图了解如何从浴室到您的卧室。您的起始节点必须是浴室,然后是您实际丢失的地方。你在房子里闲逛,备份并尝试其他门,当你找到卧室(解决方案)时,你就停下来。有两个图:一个是搜索树;另一个是搜索顺序的线性路径。实际上是三,如果你包含问题空间本身。
问题空间,<>
表示双向边缘(大多数人的房子的所有门都可以让人们接纳这两个方向):
BATHROOM
<>
ENTRANCE <> HALLWAY <> DINING ROOM
<>
STAIRWAY <> KIDS ROOM
<>
BEDROOM
搜索图 - 树(->
表示母女关系;在树中,它们通常被视为单向)
Bathroom -> Hallway -> Entrance
-> Stairway -> Kids Room
-> Bedroom
-> Dining Room
搜索顺序 - 显示您如何遍历树的线性图。
Bathroom -> Hallway -> Entrance -> Stairway -> Kids Room -> Bedroom
在BFS中,给定相同的图形,它将是:
Bathroom -> Hallway -> Entrance -> Stairway -> Dining Room -> Kids Room -> Bedroom
起始节点由问题设定:“我在浴室里”。目标节点也由问题设定:“我想到卧室”。
另一个问题是:“我在奥赛罗的特定位置。(开始)我想赢。(目标)”
另请注意,如果我在走廊里丢失,我仍然可以使用DFS;您只需将图形转换为树,并将任何边缘修复为远离开头:
Hallway -> Entrance
-> Dining Room
-> Stairway -> Kids Room
-> Bedroom
-> Bathroom