class GraphMatrix
Attributes
edges[W]
type[W]
weight_limit[W]
Public Class Methods
new(args)
click to toggle source
# File lib/graphify/graph_matrix.rb, line 3 def initialize(args) @type = args[:type] @weight_limit = args[:weight_limit] if args.has_key?(:num_vertices) @edges = Array.new(args[:num_vertices]) { Array.new(args[:num_vertices]) } initialize_helper(args[:num_vertices], args[:num_edges]) else @edges = args[:edge_matrix] end end
Public Instance Methods
edges()
click to toggle source
# File lib/graphify/graph_matrix.rb, line 44 def edges result = [] (0..(@edges.length - 1)).each do |index| (0..(@edges.length - 1)).each do |s_index| next if @type == 'undirected' && s_index < index result << [index, s_index] if @edges[index][s_index] != nil end end result end
edges_with_weights()
click to toggle source
# File lib/graphify/graph_matrix.rb, line 55 def edges_with_weights result = [] (0..(@edges.length - 1)).each do |index| (0..(@edges.length - 1)).each do |s_index| next if @type == 'undirected' && s_index < index result << [index, s_index, @edges[index][s_index]] if @edges[index][s_index] != nil end end result end
get_edge_weight(from, to)
click to toggle source
# File lib/graphify/graph_matrix.rb, line 32 def get_edge_weight(from, to) @edges[from][to] end
get_in_edges(vertex)
click to toggle source
# File lib/graphify/graph_matrix.rb, line 23 def get_in_edges(vertex) return if (vertex < 0 || vertex >= @edges.length) vertices = [] (0..(@edges.length - 1)).each do |index| vertices << index if @edges[index][vertex] != nil end vertices end
get_out_edges(vertex)
click to toggle source
# File lib/graphify/graph_matrix.rb, line 14 def get_out_edges(vertex) return if (vertex < 0 || vertex >= @edges.length) vertices = [] (0..(@edges.length - 1)).each do |index| vertices << index if @edges[vertex][index] != nil end vertices end
vertices()
click to toggle source
# File lib/graphify/graph_matrix.rb, line 36 def vertices vertices = [] (0..(@edges.length - 1)).each do |index| vertices << index end vertices end
Private Instance Methods
add_edge_helper(to, from, counter)
click to toggle source
# File lib/graphify/graph_matrix.rb, line 78 def add_edge_helper(to, from, counter) return counter if @edges[from][to] != nil @edges[from][to] = generate_edge_weight @edges[to][from] = @edges[from][to] if @type == 'undirected' counter + 1 end
generate_edge_weight()
click to toggle source
# File lib/graphify/graph_matrix.rb, line 85 def generate_edge_weight if @weight_limit == 0 1 else rand(@weight_limit) end end
initialize_helper(num_vertices, num_edges)
click to toggle source
# File lib/graphify/graph_matrix.rb, line 68 def initialize_helper(num_vertices, num_edges) counter = 0 while counter < num_edges from = rand(num_vertices) to = rand(num_vertices) next if from == to counter = add_edge_helper(to, from, counter) end end