In loop jamming, the bodies of the two loops are merged together to form a single loop provided that they do not make any references to each other.
In loop concatenation, the bodies of the two loops are concatenated together to form a series of loop, loop concatenation, some times help to reduce complexity.
In loop unrolling, we try to optimize a program's execution speed. It is also known as space–time tradeoff.
In strength reduction compiler optimize expensive operations with equivalent but less expensive operations.
Explanation : Dynamic linking is used to reduce space consumption on disk and memory. It also reduce the cost of software update. But it doesn't reduce program's time complexity. So, option (B) is correct.
The grammar S → a Sb |bSa|SS|∈, where S is the only non-terminal symbol and ∈ is the null string, is ambiguous. When we will try to generate an expression then one string can be generated by more then one parse tree.