名詞解釋 Python中什么叫廣度優(yōu)先?
Python中什么叫廣度優(yōu)先?建議您閱讀這本書:《算法偵探》中可以一口氣讀完的神奇算法書這個概念不容易理解,讓我給您舉個例子:您試圖殘酷破解4位密碼:0001000200030004005000600
Python中什么叫廣度優(yōu)先?
建議您閱讀這本書:《算法偵探》中可以一口氣讀完的神奇算法書
這個概念不容易理解,讓我給您舉個例子:
您試圖殘酷破解4位密碼:000100020003000400500060007是深度優(yōu)先算法,相當于二叉樹先進入子節(jié)點進行搜索。
嘗試0001001011112112222222相當于廣度優(yōu)先算法,即先檢索父節(jié)點,然后檢索所有子節(jié)點。
實現(xiàn)圖的廣度優(yōu)先搜索算法需使用的輔助數(shù)據(jù)結構為( ) A. 棧B.隊列C. 二叉樹,麻煩解釋一下,謝謝?
寬度優(yōu)先使用隊列,深度優(yōu)先使用堆棧。簡要描述如下:
廣度優(yōu)先:將節(jié)點添加到隊列時,應將其標記為已遍歷。在遍歷過程中,對于隊列的第一個元素,它應該遍歷一步中可以到達的所有節(jié)點。如果它被標記為未遍歷,則應將其添加到隊列中。從第一個元素開始,遍歷后將列出一步中可以到達的所有節(jié)點。
深度優(yōu)先:遍歷節(jié)點a時,如果標記為未遍歷,則將其放在堆棧上,并遍歷一步即可直接到達的節(jié)點。如果標記為未遍歷,則將其放在堆棧上并標記為已遍歷,然后執(zhí)行類似于A的操作。否則,找到一步可以直接到達的節(jié)點并執(zhí)行類似的操作。在遍歷一個步驟中可以直接到達的所有節(jié)點之前,a將從堆棧中退出。
使用“一步可到達的節(jié)點”而不是“相鄰節(jié)點”時,會考慮到有向圖因素。
您可以找到特定的圖形,然后使用廣度和深度算法再次搜索。您可以在每個步驟手動修改隊列和堆棧,以了解發(fā)生了什么。