Example { 1 – –1} Use Bubble Sort (sort in increasing order} After first pass { –1 50} After Second Pass { } After Third Pass { } After Fourth Pass { } After Fifth Pass { } Done
Example { 1 – –1} Use Insertion Sort (sort in increasing order} After first pass { } After Second Pass { } After Third Pass { } After Fourth Pass { } After Fifth Pass { } Done
Example { 1 – –1} Use Selection Sort (sort in increasing order} After first pass ( { } After Second Pass { } ( {-11 – }, {-11 – } After Third Pass { } After Fourth Pass { } After Fifth Pass { } Done
An example of greedy algorithm: Solution is in steps and every step you pick the best solution for that step.
Compare your solution (using the greedy algorithm) with the best solution (the one gives you the fewest number of coins). Both will have the same number of quarters ….. (# of your quarters >= # of best solution’s quarters). If the inequality is strict, then # of coins in the best solution will be greater than yours …. From so the changes in dimes, nickels and pennies in both solutions are the same (the remainder of the change divided by 25c). So both solution will have the same number of coins. Suppose now you only use quarters, dims and pennies. Do you think the greedy algorithm work? What is the result of the greedy algorithm for 30c? Is this the optimal solution? (The fewest coins)? Why?
Halting Problem Does there exist a procedure (algorithm or program) that can tell a given program with a given input will stop (halt) after a finite number of steps. A Fundamental and interesting (theoretical) problem in computer science.
More Specifically: Let H(P, Q) be the halting program (it returns two values: halt and loop forever). Define a new program K, taking input P(any program) K(P) K(P) will loop forever if H(P, P) return “halt” K(P) will halt if H(P, P) return “loop forever” Then, H(P, Q) does not work for K. If H(K, K) return halt, by definition K(K) will loop forever If H(K, K) return loop forever, by definition K(K) will halt.