The problem is challenging. Perfection is impossible (for deeply philosophical reasons), but a reasonably tractable system strikes me as possible.
https://www.google.com/intl/es419/insidesearch/features/sear...