A Little late in replying but:

This can be solved using *Dynamic programming* or Memoization in O( |V| )

|V| - Number of nodes in the tree.

Here is the rough idea of the algorithm:

Step1: Arbitrarily select a node of the tree as root.

Step2:  result = minimum( min_police( root, false ), min_police(root,true) +
1)


/*
          r           -  root of the subtree we're solving for
          covered - a flag denoting whether the current node contains a
police
*/

*min_police( r, covered ) :
      result = 0
      /*
           the current node contains the police man so the adjacent nodes
           may / may not have a police man.
     */
     if( covered )
          for each vertex v1 adjacent to r do
              result = result + minimum ( min_police(v1, false),
min_police(v1,1) + 1 )*
          *return result

      else
          /*
              ->current node doesn't contain a police man so at least one of
the adjacent nodes
                  must have a police man.
              -> we initially find the minimum number of police men by not
considering the above
                  restriction
              -> if in the process of greedily assigning policemen we had
assigned a policeman to
                  one of the adjacent nodes then we do nothing
              -> otherwise we need to assign policeman to the node where the
difference between
                  number policemen in two cases is least.
          */
          min_c_diff          = int_max
          min_c_dif_node  = -1
          **for each vertex v1 adjacent to r do
                c1 = min_police( v1,false)
                c2 = min_police(v1,1) + 1
                if c1 < c2
                    if min_c_diff > c2-c1
                        min_c_diff          = c2-c1
                        min_c_diff_node = v1
                result = result + minimum ( c1,c2 )*
*           if min_c_diff > 0:
                result = result - min_c_diff*
          *return result**
          *
  I have not included the Dynamic programming or Memoization part here but
you can extend the idea  and implement it. And what you have asked is the
special case of a general problem Vertex Cover in a graph.
http://en.wikipedia.org/wiki/Vertex_cover
It is considered NP-complete for general graphs. But for the trees it can be
solved in O(|V|) using the above explained algorithm.

Hoping it helps.




On Tue, Jun 8, 2010 at 9:08 PM, Raj N <rajn...@gmail.com> wrote:

> @sharad: Can u explain topological sort here?
>
>
> On Tue, Jun 8, 2010 at 12:06 PM, divya jain <sweetdivya....@gmail.com>wrote:
>
>> @sharad..
>>
>> sorry bt i dint get how to use bellman ford or topological sort here...
>> can u plz explain...
>>
>>
>> On 8 June 2010 05:53, sharad kumar <aryansmit3...@gmail.com> wrote:
>>
>>> for placing police man we can use bellman ford bfs.or even make use of
>>> topological sort.
>>>
>>>
>>> On Mon, Jun 7, 2010 at 9:59 PM, divya <sweetdivya....@gmail.com> wrote:
>>>
>>>> consider a tree. policemen is to be placed such that for each edge of
>>>> tree, there is a policeman on atleast one side of each edge. tell the
>>>> min no. of policemen and their locatn in time O(n)
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Algorithm Geeks" group.
>>>> To post to this group, send email to algoge...@googlegroups.com.
>>>> To unsubscribe from this group, send email to
>>>> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
>>>> .
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/algogeeks?hl=en.
>>>>
>>>>
>>>
>>>
>>> --
>>> yezhu malai vaasa venkataramana Govinda Govinda
>>>
>>>  --
>>> You received this message because you are subscribed to the Google Groups
>>> "Algorithm Geeks" group.
>>> To post to this group, send email to algoge...@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/algogeeks?hl=en.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algoge...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algoge...@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>



-- 
Thanks and regards
Rizwan A Hudda
http://sites.google.com/site/rizwanhudda

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to