Optimalno podudaranje je algoritam koji se koristi u mnogim programima kako bi pomogao ljudima da pronađu najbliže podudaranje. Uz optimalno podudaranje, pretraživanje će prvo otkriti stvari koje se donekle podudaraju s pojmom za pretraživanje; zatim će ponovno provjeriti pronađene stavke za optimalno podudaranje. Nasuprot tome je pohlepno podudaranje, koje ne preispituje pronađena podudaranja. To se koristi u mnogim programima i može pomoći ljudima da pronađu dokumente, web stranice, funkcije programa i mnoge druge stvari. Postoji mnogo optimalnih algoritama za usklađivanje, a svaki je napravljen da zadovolji određenu svrhu.
Optimalni algoritam za podudaranje često traje dulje od ostalih algoritama za podudaranje, jer radi mnogo više kada se koristi. Prvo gleda uneseni pojam za pretraživanje i pronalazi sva podudaranja koja su vrlo slična tom pojmu. Algoritam će zatim pregledati ta podudaranja i pažljivo analizirati svako od njih kako bi vidio da li se neko od njih doista podudara. Svi predmeti koji prežive ovaj drugi rez zatim se pokazuju korisniku.
Nasuprot optimalnom podudaranju je pohlepno podudaranje. Uz ovu shemu podudaranja, korisnik i dalje može unijeti pojam za pretraživanje, nakon čega algoritam za podudaranje počinje raditi gledajući sve slične datoteke i dokumente. Razlika je u tome što pohlepni algoritam ne prolazi kroz fazu ponovnog razmatranja, pa se svi pronađeni dokumenti odmah prikazuju korisniku. Ovaj algoritam obično radi brže i obično je bolji na manjim sustavima u kojima ponovno razmatranje možda nije potrebno ili kada korisnik želi rezultat koji prikazuje svaku pojedinačnu podudarnu stavku.
Postoji mnogo namjena za optimalno podudaranje i, kao rezultat, algoritam se dodaje mnogim različitim vrstama programa. To se obično vidi u mnogim tražilicama, unutar baza podataka i osnovnih programa te u cijelim operativnim sustavima. Također se može programirati u prilagođeni softver ako programer želi koristiti optimalnu shemu podudaranja.
Iako algoritam za optimalno podudaranje uvijek slijedi isti put pronalaženja stavki prije nego što ih skrati na najrelevantnije stavke, programerima je na raspolaganju mnogo zasebnih algoritama. Svaki algoritam govori obilježju podudaranja što treba tražiti prilikom ponovnog razmatranja pronađenih stavki. Pravilnom izradom i prilagodbom algoritma podudaranja, programeri mogu najbolje postići najtočnije rezultate. Na primjer, tražilica je općenito optimizirana za pronalaženje fraza ili ključnih riječi, dok se baza podataka može optimizirati za pronalaženje zapisa i tablica.