Представление графа в Scala в виде списка смежности

Здесь показано представление списка смежности в виде графика,

https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/a/representing-graphs.

Я довольно новичок в Scala, и поэтому я предполагаю, что это довольно тривиально. Я хочу представить мой граф в Scala как список смежности, но ребра должны иметь вес. Поэтому я подумал о том, чтобы иметь Кортеж для каждой записи в списке смежности для каждой вершины, где кортеж является вершиной и стоимостью ребра. Надеюсь, это имеет смысл. Я просто хочу знать, как написать это графическое представление в val.

Например:

A -> [(B, 1), (C, 1), (D, 1)]

B -> [(A, 1), (C, 2), (D, 2)]

C -> [(A, 1), (B, 2)]

D -> [(A, 1), (B, 2)]

Как бы я написал это как val в Scala? Индекс списка может представлять буквы узлов. Будет ли это а List[List[(String, Int)]]? Мне трудно в Scala присваивать значения переменным, когда я действительно хочу указать тип переменной.

1 ответ

  1. Как бы я написал это как val в Scala?

    val adjList = List(List(("b", 1), ("c", 1), ("d", 1)), List(...), List(...), List(...))
    

    Типы выводятся для вашего быть List[List[(String, Int)]]. Вы можете указать их вручную, если хотите, но это не требуется.