http://www.perlmonks.org?node_id=997464


in reply to Re: Finding subgraphs induced by a set of given vertices.
in thread Finding subgraphs induced by a set of given vertices.

The code fails on this data Code
---------DATA-------------- b c a a c d d e b e f g g d f h i g
And the output is
component 2 = e d g f component 1 = c a b b c a
Which is wrong, because it should have been this
component 2 = e d g f e f g g d f component 1 = c a b b c a
Because with the vertices in component 2, we can have 4th & 5th row of DATA. Please help on this

Replies are listed 'Best First'.
Re^3: Finding subgraphs induced by a set of given vertices.
by zing (Beadle) on Oct 05, 2012 at 20:07 UTC
    I hope I was clear explaining my problem. Please let me know if you need any other information. Help me on his
      Guys the problem is like to check if an array is contained inside another array.
      perl -le '@x = qw(a b c d e f); @y = qw(a d f); $n = grep { $e = $_; not grep { $e =~ /\Q$_/i } @x } @y; print "Count of elements in (@y) that are NOT present in ( +@x) = $n" ' Count of elements in (a d f) that are NOT present in (a b c d e f) = 0
      So if the count is 0, you know that @y is a subset of @x and hence you want to return it from the "induced" subroutine. I hope this would even clear out the mess. Now can this be incorporated as a subroutine. The input will be DATA taken in as an array. The second array will hold the connected components.
      ____DATA_____ b c a a c d d e b e f g g d f h i g
      @Components
      a b c a b d c e f d g
      So I want to see if any row of @DATA is contained inside @Components. So the output expected is
      component 1 = a b c induced = b c a component = a b d c induced = b c a a c d component 3 = e f d g induced = e f g g d f