51 votes

Consider the basic block given below.

a = b + c c = a + d d = b + c e = d - b a = e + b

The minimum number of nodes and edges present in the DAG representation of the above basic block respectively are

- $6$ and $6$
- $8$ and $10$
- $9$ and $12$
- $4$ and $4$

63 votes

Best answer

A normal DAG construction will give $8$ nodes and $10$ edges as shown below.

Since, this question asks for minimum possible, we can assume algebraic simplification is allowed. So, $d = b + c, e = d - b$; can be simplified to $d = b + c$; $e = c$; Similarly, $e = d - b$; $a = e + b$; can be simplified to $a = d$. This gives the following DAG with $6$ nodes and $6$ edges.

https://cs.nyu.edu/~gottlieb/courses/2000s/2006-07-fall/compilers/lectures/lecture-14.html [working link]

Correct Answer: $A$

1

Why is definition d added to node a? In 3rd statement c is getting redefined and hence the new value of c would be used for defining d. Hence a new node for d is created. What am I missing, Arjun Sir?

2

Is DAG in syllabus? but can questions of this type be expected anyone reply.... Isn't DAG used for optimisation?

0

@Arjun Sir

In 2nd Figure am unable to find edge of e = d-b; except this am understand ...I think 7 edges will be there?plzz look if you have time?

In 2nd Figure am unable to find edge of e = d-b; except this am understand ...I think 7 edges will be there?plzz look if you have time?

0

what sort of question can we expect with dag because it involves code optimization techniques which are nt in syllabus?

0

@sushmita

I think it is intermediate code and DAG combination question and both of them are in syllabus..

I think it is intermediate code and DAG combination question and both of them are in syllabus..

4

can we do it like this-

a=b+c

c=a+d

d=b+c

e=d-b

a=e+b

Now d is common subexpression so we need not compute it again-

Hence it will become-

a=b+c

c=a+d

e=a-b

a=e+b=a-b+b=a -----> redundant

Finally it becomes-

a=b+c

c=a+d

e=a-b

It will also require 6 nodes and 6 edges.

a=b+c

c=a+d

d=b+c

e=d-b

a=e+b

Now d is common subexpression so we need not compute it again-

Hence it will become-

a=b+c

c=a+d

e=a-b

a=e+b=a-b+b=a -----> redundant

Finally it becomes-

a=b+c

c=a+d

e=a-b

It will also require 6 nodes and 6 edges.

9 votes

**Best approach of doing this question is "Go in reverse order". and it has asked for minimum so we can simplify wherever possible.**

A = (E+B)

((D-B)+B) = (D) Because both + , - has same precedence

(B+C)

(B+(A+D))

(B+((B+C)+D))