Kombinatorinen räjähdys on termi, jota käytetään kuvaamaan jyrkän ("räjähdysmäisen") kasvun vaikutusta algoritmin aikamonimutkaisuuteen, kun ongelman syöttödatan koko kasvaa [1] .
Tarkemmin sanottuna tämä tarkoittaa, että tarkasteltavana oleva algoritmi ei ole polynomi, eli tehtävän ratkaisuaikaa ei rajoita mikään syötteen pituuden polynomi. Tyypillisesti tällaisilla ongelmilla on eksponentiaalinen tai jopa supereksponentiaalinen monimutkaisuus.
Nimen alkuperä johtuu siitä, että muuta tapaa ongelman ratkaisemiseksi ei löydy. , paitsi täydellinen luettelo kaikista mahdollisista vaihtoehdoista. Tässä tapauksessa ratkaisun vaatima aika on verrannollinen kaikkien mahdollisten konfiguraatioiden lukumäärään, joka määräytyy tietyistä kombinatorisista näkökohdista (yhdistelmät, permutaatiot).
Kombinatorisen räjähdysongelman ohittamiseksi etsitään erityisiä ratkaisumenetelmiä, erityisesti heuristisia algoritmeja .
Kombinatorinen räjähdys esiintyy monissa hakuongelmissa [2] , raa'an voiman menetelmillä ratkaistavissa sekvenssilaskentaongelmissa . [3] [4]
Klassisessa matkustavamyyjä-ongelmassa on löydettävä optimaalinen järjestys matkustavan myyjän kaupungeissa vierailuille. Ainoa tarkka tapa ratkaista ongelma on käydä läpi kaikki mahdolliset reitit ja valita se, joka vie vähiten aikaa. Siten matkustavan myyjän ongelman ratkaisemisen monimutkaisuus osoittautuu verrannolliseksi kaikkien mahdollisten kaupunkijonojen lukumäärään, joka saadaan permutaatiokaavalla:
Joten esimerkiksi on hypoteettisesti mahdollista laskea kaikki siirtovaihtoehdot shakin lautapelissä pelin alusta pelin loppuun laskemalla kaikki yhdistelmät täydellisesti. Kuitenkin tällä hetkellä ja lähitulevaisuudessa [2] tällaista ongelmaa on käytännössä mahdotonta ratkaista. Esimerkiksi tietokoneessa, joka pystyy laskemaan miljoona peliyhdistelmää sekunnissa ja eliminoimalla ilmeisen epäoptimaaliset haarat , kestää 1 sekunti laskea 6 siirtoa eteenpäin, 11 päivää 12 siirtoa varten ja noin 32 000 vuotta 18 siirtoa varten. [2]