Хорошо, представьте, что у вас есть дерево. Вы знаете, что у него есть один лист с нужными вам данными. Предположим, вы хотите найти этот лист, путешествуя по разным ветвям дерева, пока не найдете его.
С Depth First search , если вы натолкнулись на ветку, вы бы взяли эту ветку, а затем возьмите другую ветку, другую и другую, пока не дойдете до листа.
С Ширина первый поиск (обратите внимание, я не сказал «лучший сначала» здесь), когда вы встречаете новую ветку, вы добавляете ее в очередь, к которой можно вернуться позже, пока вы не найдете все ветви на текущем уровне. Обычно, когда люди говорят «BFS», они имеют в виду Ширина Первый поиск , а не Лучший Первый.
Так что насчет Best первый поиск , как вы и просили? Хорошо, предположим, что вы выполняете поиск в глубину, и вы наткнулись на две ветви. С DFS, вы просто выбираете первый каждый раз, позже вы вернетесь и выберете другой.
С помощью Лучший первый поиск вы выбираете ветвь с наибольшим эвристическим значением, основываясь на некоторой эвристике, которую вы используете, чтобы помочь угадать лучший путь. Таким образом, поиск Best First - это type of Depth first search.
Википедия очень полезна для подобных вопросов, кстати.