We are Permanently Move to vupk.net Please Join us there.
Showing posts with label CS502. Show all posts
Showing posts with label CS502. Show all posts

CS502 GDB Idea Solution Spring July 2012

CS502 GDB Idea Solution Spring July 2012


Dynamic Programming is always preferable over greedy approach ” Support or contradict this statement with solid arguments.
Solution No.1
Dynamic programming is both a mathematical optimization method and a computer programming method. In both contexts it refers to simplifying a complicated problem by breaking it down into simpler sub problems in a recursive manner. [ While some decision problems cannot be taken apart this way, decisions that span several points in time do often break apart recursively; Bellman called this the "Principle of Optimality". Likewise, in computer science, a problem that can be broken down recursively is said to have optimal substructure. If sub problems can be nested recursively inside larger problems, so that dynamic programming methods are applicable, then there is a relation between the value of the larger problem and the values of the sub problems.[5] In the optimization literature this relationship is called the Bellman equation.
Solution No.2
Yes, it is true. Although these both approaches are used to solve problems optimally, but in the same time there are some reasons which make Dynamic programming preferable over greedy approach e.g. dynamic programming solves problems by breaking down in smaller sub problems and also stores results in some form for future reference, which definitely comes always in a solution and also in optimal one. while greedy approach always progress in best possible solution at present without thinking about future hence it can some time mislead us in such that it cannot provide any solution to the problem. For your reference there is also an example given below which will help to understand the greedy approach disadvantage.
So we can conclude that how simple greedy approach mislead us and thus we cannot get our required solution. Now it totally clears that using greedy approach if we start from node 7 at that point the best possible of both is 12 hence it will go towards 12 and then finally towards 6. While if we look other side of tree the best possible we can obtain is 99. So we can conclude that how simple greedy approach mislead us and thus we cannot get our required solution.
Solution No.3
A greedy algorithm is similar to a dynamic programming algorithm, but the difference is that solutions to the subproblems do not have to be known at each stage; instead a “greedy” choice can be made of what looks best for the moment.
Consider this example.
You are standing at a place A. You are to goto B. There are intermediate places C1,C2 …
You want to minimize distance travelled.
Greedy Method of Solving
You don’t want to try all intermediate places. You go to the nearest intermediate place. Why? You feel by going to the nearest intermediate place, you will minimize the distance to B.
Dynamic Programming
You try all the places, but you store the previous result. Eg: To reach C3 in minimum distance, you reached by C1. So you store C1. So if you want to go to C5, by C3, you will go to C1 then C3 and then check if going from C3 to C5 is nearest.
Solution No.4
Dynamic Programming is always preferable over greedy approach because reasons which make Dynamic programming preferable over greedy approach e.g. dynamic programming solves problems by breaking down in smaller sub problems and also stores results in some form for future reference, which definitely comes always in a solution and also in optimal one. while greedy approach always progress in best possible solution at present without thinking about future hence it can some time mislead us in such that it cannot provide any solution to the problem.

CS502 Assignment No 5 Solution Spring 2012

 CS502 Assignment No 5 Solution Spring 2012

Suppose that all edge weights in a graph are integers in the range from 1 to |V|. How fast can you make Kruskal’s algorithm run? What if the edge weights are integers in the range from 1 to W for some constant W?

Solution:
We know that Kruskal’s algorithm takes O(V ) time for initialization, O(E lgE) time to sort
the edges, and O(E(V )) time for the disjoint-set operations, for a total running time of O(V +
E lgE + E(V )) = O(E lgE).
If we knew that all of the edge weights in the graph were integers in the range from 1 to |V |,
then we could sort the edges in O(V + E) time using counting sort. Since the graph is connected,
V = O(E), and so the sorting time is reduced to O(E). This would yield a total running time of
O(V + E + E(V )) = O(E(V )), again since V = O(E), and since E = O(E(V )). The time
to process the edges, not the time to sort them, is now the dominant term. Knowledge about the
weights won’t help speed up any other part of the algorithm, since nothing besides the sort uses
the weight values.
If the edge weights were integers in the range from 1 to W for some constant W, then we could again
use counting sort to sort the edges more quickly. This time, sorting would take O(E +W) = O(E)
time, since W is a constant. As in the first part, we get a total running time of O(E(V )).

CS502 Assignment # 4 Solution June 2012

 CS502 Assignment # 4 Solution
Question:

Give an example of a directed graph G = (V, E), a source vertex s V, and a set of tree edges Eπ ⊆ E such that for each vertex v V, the unique path in the graph (V, Eπ) from s to v is a shortest path in G, yet the set of edges Eπ cannot be produced by running BFS on G, no matter how the vertices are ordered in each adjacency list.

Solution:

Let V={s,1,2,3,4}
E={( s,1) ( s,2) ( 1,3) ( 1,4) ( 2,3) ( 2,4)}
Last, let

= {( s,1) ( s,2) (1,4) ( 2,3)}

If vertex 1 precedes vertex 2 on the queue for BFS, then any search will produce tree edges ( 1,3) and ( 1,4); otherwise, the tree will have edges ( 2,3) and ( 2,4).
22.2-6. There are no professional wrestlers, and r pairs of wrestlers for which there are rivalries. Find an O(n+r)-time algorithm to see if the wrestlers can be divided into ‘ good guys’ , such as rivalry is between a good and bad guy.
This question is equivalent to the following:
Given a graph on an vertices with r edges, determine whether the vertices can be divided into two parts, G,B such that no edges connects two vertices in G or two vertices in B.
It is easy to see that if such a division on possible, then there cannot be any odd length cycle; conversely, if there is no odd length cycle, a BSF can be used to construct the subdivision, start a BSF with any vertex s; call it ‘good’; put all adjacent vertices on the queue, and call them ‘ bad’; whenever a good (resp. bad) vertex is at the head of the queue, label any new adjacent vertex in the opposite way and put it on the queue. If there is no odd length cycle, there will be no ambiguity as to the designation. Since BFS takes O(n+r) steps, we are done.