Optimalno ujemanje je algoritem, ki se uporablja v številnih programih za pomoč ljudem pri iskanju najbližjega ujemanja. Z optimalnim ujemanjem bo iskanje najprej odkrilo stvari, ki se nekoliko ujemajo z iskalnim izrazom; nato bo znova preveril najdene elemente za optimalno ujemanje. V nasprotju s tem je pohlepno ujemanje, ki ne preuči znova najdenih ujemanj. To se uporablja v številnih programih in ljudem lahko pomaga pri iskanju dokumentov, spletnih mest, programskih funkcij in mnogih drugih stvari. Obstaja veliko optimalnih algoritmov ujemanja in vsak je narejen tako, da ustreza določenemu namenu.
Optimalni algoritem za ujemanje pogosto traja dlje, da deluje kot drugi algoritmi ujemanja, ker naredi veliko več, ko se uporablja. Najprej si ogleda vneseni iskalni izraz in najde vsa ujemanja, ki so zelo podobna temu izrazu. Algoritem bo nato pregledal ta ujemanja in jih skrbno analiziral, da bi ugotovil, ali se katera od njih resnično ujema. Vsi predmeti, ki preživijo ta drugi rez, se nato pokažejo uporabniku.
Nasprotje optimalnega ujemanja je pohlepno ujemanje. S to shemo ujemanja lahko uporabnik še vedno vnese iskalni izraz, po katerem začne algoritem za ujemanje pregledati vse podobne datoteke in dokumente. Razlika je v tem, da pohlepni algoritem ne gre skozi fazo ponovnega premisleka, zato so vsi najdeni dokumenti takoj prikazani uporabniku. Ta algoritem običajno deluje hitreje in je ponavadi boljši v manjših sistemih, v katerih ponovno preučitev morda ni potrebna ali ko uporabnik želi rezultat, ki prikazuje vsak posamezen ujemajoči se element.
Obstaja veliko uporab za optimalno ujemanje in posledično je algoritem dodan številnim različnim vrstam programov. To je običajno opaziti pri številnih iskalnikih, v bazah podatkov in osnovnih programih ter v celotnih operacijskih sistemih. Prav tako se lahko programira v programsko opremo po meri, če želi programer uporabiti optimalno shemo ujemanja.
Medtem ko algoritem za optimalno ujemanje vedno sledi isti poti iskanja elementov, preden jih razreže na najbolj relevantne elemente, je programerjem na voljo veliko ločenih algoritmov. Vsak algoritem pove ujemajoči se funkciji, kaj naj išče pri ponovnem preučitvi najdenih elementov. S pravilno izdelavo in prilagajanjem algoritma ujemanja lahko programerji najbolje dosežejo najbolj natančne rezultate. Na primer, iskalnik je na splošno optimiziran za iskanje besednih zvez ali ključnih besed, medtem ko je lahko baza podatkov optimizirana za iskanje zapisov in tabel.