Ho una serie di sfide puzzle per un prototipo di kit puzzle, simile ai prodotti commerciali offerti da Thinkfun e Popular Playthings. Ho una lista di candidati di 300 rompicapo e vorrei selezionarne 40. Per ogni sfida, ho un valore numerico che rappresenta la difficoltà della sfida, un altro valore che rappresenta la difficoltà della sfida dopo un suggerimento e un terzo valore che rappresenta la difficoltà della sfida dopo che è stato dato un secondo suggerimento.
Quando presento i puzzle ordinati per difficoltà, idealmente i puzzle dovrebbero avere ancora la stessa difficoltà relativa dopo che è stato fornito un suggerimento. Ad esempio, un puzzle difficile con un suggerimento non dovrebbe essere più facile di un puzzle facile con un suggerimento. Se riesco a selezionare 40 puzzle con quella proprietà, allora ho il vantaggio di poter dire "per i bambini più piccoli, dare due suggerimenti per ogni puzzle" e non dover riordinare i numeri del puzzle.
Non ho davvero bisogno di tutti i sottoinsiemi di 40 che corrispondono ai miei criteri, solo uno buono. Se avessi una lista di tutti i sottoinsiemi, comunque, sarei in grado di sceglierne uno usando più desiderata. Ad esempio, troverei uno che i migliori cluster in quattro gruppi di 10, e quindi etichettare le sfide "facile", "medio", "difficile" e "esperto".
Mi piacerebbe trovare tutti i sottoinsiemi di 40 punti in modo che, indipendentemente da quale dimensione ordino il sottoinsieme, l'ordine è lo stesso.
In altre parole, trova un sottoinsieme {P0, P1, P2, ... P39} in modo che ogni volta che A < B, X [PA] < X [PB], Y [PA] < Y [PB] e Z [PA] < Z [PB].
Ho provato uno stupido algoritmo greedy ricorsivo ed è troppo lento.