kirancodes.me
To Proof Maintenance & Beyond!

A greedy algorithm for dropping digits

Richard S. Bird, Shin-Cheng Mu

Abstract

Abstract Consider the following puzzle: given a number, remove k digits such that the resulting number is as large as possible. Various techniques are employed to derive a linear-time solution to the puzzle: we justify the structure of a greedy algorithm by predicate logic, give a constructive proof of the greedy condition using a dependently typed proof assistant and calculate the greedy step as well as the final, linear-time optimisation by equational reasoning.

Related papers