My attempt at stating [this question](https://codegolf.stackexchange.com/questions/5693/minimal-sudoku-generator), but with a more objective solving criterion.

Your task is to build a program or function that takes a solved Sudoku grid `S` in the format of your choice and attempts to generate a problem grid with as few clues as possible that has `S` as its unique solution. (It doesn't matter what method `S` is the unique solution by, including brute force, as long as the solution is provably unique.)

---

Your program will be scored by running it through a set of 100,000 solution grids found in [this file](https://github.com/joezeng/pcg-se-files/raw/master/ppcg_sudoku_testing.txt) (7.82 MB download), and adding up the number of clues in all 100,000 problem grids that your solution produces.

The Sudoku solutions in the above test file are expressed as an 81-character string, from left-to-right, then top-to-bottom. The code required to turn the input in the test file into a usable solution will not count towards your solution's byte count.

As in my [Flood Paint](https://codegolf.stackexchange.com/questions/26232/create-a-flood-paint-ai) challenge, your program must actually produce a valid output for all 100,000 puzzles to be considered a valid solution. The program that outputs the fewest total clues for all 100,000 test cases is the winner, with shorter code breaking a tie.

---

Current scoreboard:

1. [2,361,024](https://codegolf.stackexchange.com/a/48536/7110) - nutki, C
2. [2,580,210](https://codegolf.stackexchange.com/a/48526/7110) - es1024, PHP
3. [6,000,000](https://codegolf.stackexchange.com/a/48517/7110) - CarpetPython, Python 2
4. [7,200,000](https://codegolf.stackexchange.com/a/48510/7110) - Joe Z., Python