14. Given an array of integers where each element represents the maximum number of steps that can be moved forward from that position, write an algorithm to determine if it is possible to reach the last index from the first index. If it is possible, find the minimum number of jumps required to reach the end. Discuss how you would approach this problem using dynamic programming.
15. Given the following undirected graph with 5 vertices and 6 edges:
Vertices: {A, B, C, D, E}
Edges: {(A, B), (A, C), (B, D), (B, E), (C, E), (D, E)}
Using a greedy approximation algorithm, select a minimum vertex cover for this graph. Discuss the steps of the algorithm and calculate the size of the vertex cover. What is the approximation ratio of the algorithm?