0
두 문자열 사이의 최단 경로를 찾고 얼마나 많은 단계를 수행했는지 int를 반환하려고합니다. 각 String (키)에 해당 문자열이 모두 들어있는 String[]
(객체)가있는 HashMap이 있다고 가정합니다.문자열 경로 지정 BFS
이 코드는 내가 채찍질 한 것입니다. 방금 기본 BFS를 가져 와서 복사하려고했으나 진행 방법을 알 수 없습니다. 물고기에서 암소에
Goat, adj[] {Fish, Cow, Chicken}
Cow, adj[] {Pig, Pigeon}
Fish, adj[] {Goat, Bulbasaur, Dolphin, Eagle}
내가 두 단계가 필요합니다
public class Main {
private static HashMap<String, String[]> list;
private static int makePath(String from, string to) {
int path = 0;
PriorityQueue<String> queue = new PriorityQueue<>();
queue.add(from);
while (!queue.isEmpty()) {
String u = queue.poll();
if (u == to) {
return path;
}
else {
for (String r : list.get(u)) {
...
}
return path;
}
}
return 0;
}
}
이 내 HashMap의이 어떻게 보이는지 단지 예입니다. 물고기에서 염소, 염소에서 물고기까지. 당신이 가지고있는 경우
그래서 어떤 아이디어는 내가 2 대기열을 사용하는 생각입니다 :)
당신이 "문자열 경로"가 무엇을 의미합니까? [edit distance] (http://en.wikipedia.org/wiki/Levenshtein_distance)와 같은 것을 의미합니까? –
집합의 두 문자열 사이에 경로가 있습니다. HashMap에 포함되어있는 각 문자열에는 이웃 배열이 있습니다. – Swidtter
나는 그가 그래프 데이터 구조를 가지고 있다고 말하려고 노력하고 있으며, 노드들 사이의 최단 경로 알고리즘을 찾고있다. –