/ / Czy ten robot sieciowy wykonuje wyszukiwanie w pierwszej kolejności lub wyszukiwanie w głębi? - java, przeszukiwacz sieci, wyszukiwanie w pierwszej kolejności, wyszukiwanie w pierwszej kolejności

Czy ten robot sieciowy wykonuje pierwsze lub pierwsze wyszukiwanie? - java, robot sieciowy, pierwsze wyszukiwanie wszerz, pierwsze wyszukiwanie w głąb

Czy ktoś wie, czy opisany tutaj robot sieciowy korzysta z wyszukiwania w pierwszej głębokości lub pierwszej szerokości? Mój instynkt mówi, że jest to pierwsze wyszukiwanie, ale nie jestem w 100% tego pewien.

Ponadto, czy przeszukiwacz sieci korzysta z tych sposobów wyszukiwania (w szczególności przy użyciu rekursji)?

Odpowiedzi:

2 dla odpowiedzi № 1

To jest wyszukiwanie po głębokości. Zanotuj ten kod:

//get all links and recursively call the processPage method
Elements questions = doc.select("a[href]");
for(Element link: questions){
if(link.attr("href").contains("mit.edu"))
processPage(link.attr("abs:href"));
}

Ten kod będzie rekurencyjnie eksplorować wszystkie łączaznalezione na stronie, w pełni eksplorując pierwsze łącze i wszystko, co jest osiągalne, następnie drugie łącze i wszystko, co jest osiągalne, itd. W związku z tym eksploracja odbywa się w pierwszej kolejności.

Powiedział, że tak będzie naprawdę powolny, ponieważ robi tylko jeden wątekbadanie. Prawdopodobnie byłoby to o wiele bardziej wydajne, gdyby zostało przepisane jako zmodyfikowany BFS, który umieścił niezbadane strony na liście roboczej i miał kilka wątków, które złapały niezbadane strony i przetworzyły je.

Nie jest również dobrym pomysłem używanie rekurencji, gdyeksplorowanie łączy internetowych. Będziesz łatwo zdmuchnąć stos wywołań, jeśli spróbujesz to zrobić, ponieważ każda wystarczająco duża strona będzie miała linki, które będą się przemieszczać po całym miejscu. Rozumiemy to na podstawie doświadczenia podczas próby wykonania DFS na Wikipedii.

Mam nadzieję że to pomoże!