Constraint programmering (eller constraint programmering ) er et programmeringsparadigme , hvor relationer mellem variable er specificeret i form af begrænsninger. Begrænsninger adskiller sig fra de almindelige primitiver for imperative programmeringssprog ved, at de ikke definerer en række trin, der skal udføres, men egenskaber ved den løsning, der søges, hvilket gør sådan programmering til en form for deklarativ programmering . Forskellige typer begrænsninger er mulige: dem, der bruges i begrænsningstilfredshedsproblemer (f.eks. "A eller B er sande"), dem, der løses af simplex-algoritmen (f.eks. " ") og andre. Begrænsninger er normalt indbygget i programmeringssproget eller implementeret gennem separate softwarebiblioteker .
Constraint programmering er tæt forbundet med constraint satisfaction theory , som tilbyder et praktisk apparat og et simpelt formelt skema til at repræsentere og løse kombinatoriske kunstig intelligens- problemer . Blandt de problemer, der løses af begrænsningsprogrammeringsværktøjer, er elektronisk kredsløbsverifikation, planlægning , planlægning og mange kombinatoriske problemer.
Historisk set er den første form begrænset logisk programmering., baseret på logisk programmering , dukkede op i 1987 som en specifik klasse af restriktioner for Prolog-II, de første implementeringer var Prolog III, CLP (R) og CHIP. Af de moderne tolke understøttes begrænset logisk programmering især af GNU Prolog .
Begrænsninger kan også blandes med funktionel programmering , omskrivning af termer og imperativt sprog . Programmeringssprog med indbygget understøttelse af begrænsninger er Oz (funktionel programmering) og Kaleidoscope (imperativ programmering). For det meste implementeres begrænsninger i imperative sprog gennem begrænsede problemløsningsværktøjer, som er separate biblioteker for eksisterende imperative sprog.