Обход BFS-графика в JavaScript работает на игрушке, а не в реальной задаче - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь понять эту функцию из Структур и алгоритмов практических данных с JavaScript , как видно здесь Я преобразовал ее в TypeScript здесь .

Работает на следующем игрушечном объекте:

g = {
  a: ['e', 'f', 'b', 'c', 'd'],
  b: ['a', 'd', 'c'],
  c: ['a', 'b', 'c'],
  d: ['a', 'b', 'c'],
  e: ['a', 'f'],
  f: ['e', 'a', 'g'],
  g: ['f']
};

Но он не работает на этом объекте, который кажется достаточно похожим. Он никогда не найдет путь:

wordlist = {
    a-buff_d-green: ["a-buff_dd-green_s-lilac", "d-green_a-buff_d-green", "f-mauve_a-buff_d-green", "m-orange_a-buff_d-green", "p-chestnut_a-buff_d-green", "s-limegreen_a-buff_d-green", "t-fuchsia_a-buff_d-green", "l-brightblue_a-buff_d-green", "a-buff_d-green_s-lilac", "a-buff_n-lavender_d-green", "o-white_dd-green", "e-iceblue_d-green", "i-darkpink_d-green", "a-buff_t-fuchsia", "a-buff_s-lilac", "a-buff_m-orange", "a-buff_n-lavender", "a-buff_pp-chestnut", "a-buff_l-brightblue"],
   ... (continued for 670 words)
}

Это то же самое, насколько я могу судить. Оба объекта имеют ключи, значения которых являются строками, соответствующими другим ключам.

В объекте wordlist не все значения в конечном итоге приведут ко всем ключам, но startNode и targetNode были предварительно проверены таким образом, что к моменту вызова findPath гарантированный путь через wordlist учитывая начало и цель. (Еще одна функция, пройденная случайным образом; предполагается, что эта функция найдет кратчайший путь.)

Есть ли какая-то странность в отношении ключей объектов с подчеркиванием в них или что-то в этом роде? Я где-то не правильно использую аксессор? Насколько я могу судить, эти проблемы одинаковы, но когда я использую wordlist, он никогда не находит цель.

...