Sto cercando l'algoritmo migliore per il seguente problema:
In un forum, c'è una sezione dedicata alle partite tra gli utenti: significa che, dopo aver giocato una partita, un utente che ha giocato può aprire un thread riguardante la partita, dove può descrivere la partita, chi ha vinto et cetera.
I titoli dei thread, solitamente, sono qualcosa del tipo "Caio vs Sempronio", "SFIDA: Lc gino vs Ic luca - 3 partite", "dario imperator augustus ken sijhro vs dark warrior yaoming PaulMcartey".
I titolo dei thread sono ovviamente scelti dagli utenti, e non dagli amministratori del forum.
Dagli esempi che ho riportato prima, si possono leggere chi sono gli utenti che si sono scontrati: Caio contro Sempronio, LC_Gino contro IC_Luca (LC e IC sono dei tag che indicano il clan di appartenenza).
Nell'ultimo esempio i nickname sono Dario, Imperator_Augustus, KenShiro, Darkwarrior, Yao_ming, Paul_Mc_Cartney. Ho fatto apposta a scriverne alcuni sbagliati, facendo finta che sia un vero thread scritto da un vero utente, che può accidentalmente scambiare o dimenticare qualche lettera.
Ecco, ora vorrei realizzare un programma che, leggendo il titolo del thread, CAPISCA CHI SONO gli utenti che hanno giocato. Deve riuscire a capirlo anche nel caso che i nomi siano scritti sbagliati o abbreviati (es. DW = Darkwarrior, augusto, ken, paul mc). Ovviamente possono esserci utenti con nomi simili (es. Darkwarrior e DarkKnight).
Inoltre il programma non deve trovare i nomi esatti al 100%, perché i nomi trovati dal programma saranno verificati da un moderatore del forum, il quale potrà cambiare correggere i nomi non corrispondenti. L'esattezza ricercata è dell'80-90%. Il programma deve anche capire se alcune parole non corrispondono, negli esempi prima "Sfida", "3 partite", e anche "vs".