Class: BooleanMatrix
- Inherits:
-
Object
- Object
- BooleanMatrix
- Defined in:
- lib/graphr/directed_graph.rb
Constant Summary collapse
- @@masks_max =
1000
- @@masks =
calc_masks(0,@@masks_max)
Instance Method Summary collapse
- #directed_graph ⇒ Object
- #indices(anInteger) ⇒ Object
-
#initialize(objects) ⇒ BooleanMatrix
constructor
A new instance of BooleanMatrix.
- #mask(index) ⇒ Object
- #or(index1, index2) ⇒ Object
- #transitive_closure ⇒ Object
Constructor Details
#initialize(objects) ⇒ BooleanMatrix
Returns a new instance of BooleanMatrix.
420 421 422 423 424 425 426 427 428 429 |
# File 'lib/graphr/directed_graph.rb', line 420 def initialize(objects) @index, @objects, @matrix = Hash.new, objects, Array.new cnt = 0 objects.each do |o| @index[o] = cnt @matrix[cnt] = 0 # Use Integers to represent the booleans cnt += 1 end @num_obects = cnt end |
Instance Method Details
#directed_graph ⇒ Object
456 457 458 459 460 461 462 463 464 |
# File 'lib/graphr/directed_graph.rb', line 456 def directed_graph dg = Directedgraph.new @matrix.each_with_index do |v,i| indices(v) do |index| dg.link_nodes(@objects[i], @objects[index]) end end dg end |
#indices(anInteger) ⇒ Object
447 448 449 450 451 452 453 454 |
# File 'lib/graphr/directed_graph.rb', line 447 def indices(anInteger) index = 0 while anInteger > 0 yeild(index) if anInteger & 1 anInteger >>= 1 index += 1 end end |
#mask(index) ⇒ Object
434 435 436 437 438 439 440 441 |
# File 'lib/graphr/directed_graph.rb', line 434 def mask(index) mask = @@masks[index] unless mask calc_masks(@@masks_max+1, index, @@masks) mask = @masks[index] end mask end |
#or(index1, index2) ⇒ Object
443 444 445 |
# File 'lib/graphr/directed_graph.rb', line 443 def or(index1, index2) @matrix[index1] |= @matrix[index2] end |
#transitive_closure ⇒ Object
466 467 468 469 470 471 472 |
# File 'lib/graphr/directed_graph.rb', line 466 def transitive_closure for i in (0..@num_obects) for j in (0..@num_obects) end end end |