Returns strongly connected components as an array of arrays of nodes. The array is sorted from children to parents. Each elements of the array represents a strongly connected component.
class G include TSort def initialize(g) @g = g end def tsort_each_child(n, &b) @g[n].each(&b) end def tsort_each_node(&b) @g.each_key(&b) end end graph = G.new({1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]}) p graph.strongly_connected_components #=> [[4], [2], [3], [1]] graph = G.new({1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}) p graph.strongly_connected_components #=> [[4], [2, 3], [1]]
Returns strongly connected components as an array of arrays of nodes. The array is sorted from children to parents. Each elements of the array represents a strongly connected component.
The graph is represented by each_node and each_child. each_node should have call
method which yields for each node in the graph. each_child should have call
method which takes a node argument and yields for each child node.
g = {1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]} each_node = lambda {|&b| g.each_key(&b) } each_child = lambda {|n, &b| g[n].each(&b) } p TSort.strongly_connected_components(each_node, each_child) #=> [[4], [2], [3], [1]] g = {1=>[2], 2=>[3, 4], 3=>[2], 4=>[]} each_node = lambda {|&b| g.each_key(&b) } each_child = lambda {|n, &b| g[n].each(&b) } p TSort.strongly_connected_components(each_node, each_child) #=> [[4], [2, 3], [1]]
Gets various OpenSSL
options.
Sets various OpenSSL
options.
Returns a hash of the human readable reply text in the response if it is multiple lines. It does not return the first line. The key of the hash is the first word the value of the hash is an array with each word thereafter being a value in the array
Content: [ String
text ]
Content: [ String
text ]
| RelationalExpr
(‘<’ | ‘>’ | ‘<=’ | ‘>=’) AdditiveExpr
| AdditiveExpr
| MultiplicativeExpr
(‘*’ | S (‘div’ | ‘mod’) S) UnaryExpr
| UnaryExpr
| FUNCTION_NAME ‘(’ ( expr ( ‘,’ expr )* )? ‘)’
Explanation of the conflict used by exceptions to print useful messages
Waits up to the continue timeout for a response from the server provided we’re speaking HTTP 1.1 and are expecting a 100-continue response.
Checks the permissions of the credentials file. If they are not 0600 an error message is displayed and RubyGems aborts.
This method is used inside of several different objects to determine if special behavior is needed in the constructor.
Special behavior is needed if the array passed in as args
has true
or false
as its value, and if the second element of args
is a hash.