Zadovoljavanje ograničenja

(преусмерено са Constraint satisfaction)

U veštačkoj inteligenciji i operacionom istraživanju, zadovoljavanje ograničenja je proces pronalaženja rešenja kroz skup ograničenja koja nameću uslove koje varijable moraju da zadovolje.[1] Rešenje je stoga dodeljivanje vrednosti varijablama koje zadovoljavaju sva ograničenja – to jest, tačka u izvodljivom regionu.

Tehnike koje se koriste za zadovoljenje ograničenja zavise od vrste ograničenja koja se razmatraju. Često se koriste ograničenja na konačnom domenu, do te mere da se problemi sa zadovoljenjem ograničenja obično poistovećuju sa problemima zasnovanim na ograničenjima na konačnom domenu. Takvi problemi se obično rešavaju pretragom, posebno putem vraćanja unazad ili lokalnom pretragom. Propagacija ograničenja je još jedna porodica metoda koje se koriste za takve probleme; većina njih je uopšteno nepotpuna, odnosno mogu rešiti problem ili pokazati da je nezadovoljiv, ali ne uvek. Metode propagacije ograničenja se takođe koriste zajedno sa pretragom kako bi se dati problem lakše rešio. Druge razmatrane vrste ograničenja su na realnim ili racionalnim brojevima; rešavanje problema na ovim ograničenjima se vrši putem eliminacije promenljivih ili simpleks algoritma.

Zadovoljstvo ograničenjima kao opšti problem nastao je u oblasti veštačke inteligencije tokom 1970-ih (vidi na primer Laurière 1978). Međutim, kada su ograničenja izražena kao multivarijantne linearne jednačine koje definišu (ne)jednakosti, ovo polje seže do Džozefa Furijea u 19. veku: pronalazak simpleks algoritma za linearno programiranje Džordža Danciga (poseban slučaj matematičke optimizacije) iz 1946. godine omogućio je određivanje izvodljivih rešenja za probleme koji sadrže stotine varijabli.

Tokom 1980-ih i 1990-ih, razvijeno je ugrađivanje ograničenja u programski jezik. Prvi jezik koji je izričito osmišljen sa intrinzičnom podrškom za programiranje ograničenja bio je Prolog. Od tada, biblioteke za programiranje ograničenja postale su dostupne na drugim jezicima, kao što su C++ ili Java (npr. Choco za Javu[2]).

Reference

уреди
  1. ^ Tsang, Edward (13. 5. 2014). Foundations of Constraint Satisfaction: The Classic Text. BoD – Books on Demand. ISBN 978-3-7357-2366-6. 
  2. ^ Choco: An Open-Source java library for constraint programming. https://choco-solver.org Accessed Dec 12, 2021.

Literatura

уреди

Spoljašnje veze

уреди