Прежде всего, у вас также должен быть класс Graph для управления узлами и ребрами. Тогда что-то вроде этого должно помочь вам начать:
g = Graph.new
File.open('your_data_file').each do |line|
n1, n2, wt = line.split(/\s+/)
n1 = g.find_or_create_node(n1)
n2 = g.find_or_create_node(n2)
wt = wt.to_i
g.add_edge(n1, n2, wt) if(wt != 99)
end
# g is now your fully populated graph.
График g
отслеживает узлы, которые у него есть, поэтому find_or_create_node
может вернуть узел, если он уже существует, или создать его и кэшировать, если нет. Метод add_edge
соединит n1
и n2
с ребром веса wt.to_i
.
Ваш алгоритм кратчайшего пути, предположительно, будет вызовом метода для объектов графа.