VillkorsprogrammeringVillkorsprogrammering[1], på engelska constraint programming, är ett paradigm för att lösa kombinatoriska problem i vilket ett antal variabler med givna domäner skall tilldelas värden i enlighet med ett antal villkor. I villkorsprogrammering så deklarerar användaren villkor på de giltiga lösningarna vilka variablerna måste uppfylla. Området har av Association for Computing Machinery utpekats som strategiskt viktigt.[2] Vid villkorsprogrammering behöver inte någon sekvens specificeras, det är upp till den underliggande mjukvaran att testa kombinationer till dess en lösning hittats eller till dess det konstaterats att ingen lösning finns. ExempelHur villkor deklareras beror på det underliggande språket. Följande modell skriven i MiniZinc[3] är en modell för det klassiska SEND+MORE=MONEY-pusselproblemet. include "globals.mzn";
% Skapa variabler
var 1..9: S;
var 0..9: E;
var 0..9: N;
var 0..9: D;
var 1..9: M;
var 0..9: O;
var 0..9: R;
var 0..9: Y;
constraint
% Alla variabler ska ta unika värden
all_different([S,E,N,D,M,O,R,Y]);
constraint
1000*S + 100*E + 10*N + D +
1000*M + 100*O + 10*R + E =
10000*M + 1000*O + 100*N + 10*E + Y
;
solve satisfy; En variabel skapas för varje bokstav i pusslet. Varje bokstav tilldelas en domän Den sista raden Formalisering och versionerTermerna villkorsprogram och villkorsprogrammering används omväxlande för att beskriva både en snävare familj av tekniker för att lösa kombinatoriska problem med diskreta variabler och en större uppsättning som också inkluderar närliggande tekniker och formaliseringar som även tillåter kontinuerliga variabeldomäner såsom satisfierbarhet modulo teorier (SMT). Referenser
|
Portal di Ensiklopedia Dunia