Optimaalne sobitamine on paljudes programmides kasutatav algoritm, mis aitab inimestel leida lähima vaste. Optimaalse sobitamise korral avastab otsing esmalt asjad, mis otsinguterminile mõnevõrra vastavad; seejärel kontrollib see leitud üksusi optimaalsete vastete osas uuesti. Sellele vastandub ahne sobitamine, mis ei vaata leitud vasteid uuesti läbi. Seda kasutatakse paljudes programmides ja see võib aidata inimestel leida dokumente, veebisaite, programmi funktsioone ja palju muud. Optimaalseid sobitamisalgoritme on palju ja igaüks neist on loodud teatud eesmärgi täitmiseks.
Optimaalse sobitamisalgoritmi toimimiseks kulub sageli kauem aega kui teistel sobitusalgoritmidel, kuna see teeb palju rohkem, kui seda kasutatakse. Esmalt vaatab see sisestatud otsinguterminit ja leiab kõik vasted, mis sellele terminile väga sarnased. Seejärel vaatab algoritm need vasted läbi ja analüüsib neid hoolikalt, et näha, kas mõni neist kattub tõesti. Kõik esemed, mis selle teise lõike ellu jäävad, näidatakse seejärel kasutajale.
Optimaalse sobitamise vastand on ahne sobitamine. Selle sobitamisskeemiga saab kasutaja ikkagi sisestada otsingusõna, misjärel läheb sobitamisalgoritm tööle, vaadates kõiki sarnaseid faile ja dokumente. Erinevus seisneb selles, et ahne algoritm ei läbi ümbermõtlemise faasi, mistõttu kuvatakse kõik leitud dokumendid koheselt kasutajale. See algoritm töötab tavaliselt kiiremini ja kipub olema parem väiksemates süsteemides, kus ei pruugi vaja minna uuesti läbi vaatama või kui kasutaja soovib tulemust, mis kuvab iga sobiva üksuse.
Optimaalseks sobitamiseks on palju kasutusviise ja selle tulemusena lisatakse algoritm paljudele erinevat tüüpi programmidele. Seda on tavaliselt näha paljudes otsingumootorites, andmebaasides ja põhiprogrammides ning tervetes operatsioonisüsteemides. Seda saab programmeerida ka kohandatud tarkvarasse, kui programmeerija soovib kasutada optimaalset sobitusskeemi.
Kuigi optimaalne sobitamisalgoritm järgib üksuste otsimisel alati sama rada, enne kui need kõige asjakohasemateks üksusteks kärbitakse, on programmeerijatele saadaval palju erinevaid algoritme. Iga algoritm ütleb sobivale funktsioonile, mida otsida leitud üksuste ülevaatamisel. Sobitamisalgoritmi õigesti koostades ja kohandades saavad programmeerijad kõige paremini saavutada kõige täpsemaid tulemusi. Näiteks on otsingumootor üldiselt optimeeritud fraaside või märksõnade leidmiseks, samas kui andmebaasi saab optimeerida kirjete ja tabelite leidmiseks.