Boole mantık işlemlerini sıfır bir tamsayılı doğrusal programlamada (ILP) ifade eder.


58

Ben boolean değerleri göstermek için bazı değişkenleri olan bir tamsayı doğrusal program (ILP) var . 'in tam sayı olduğu ve tutmak için kısıtlı olarak ya 0 ya da 1 ( ).x i 0 x i1xixben0xben1

0/1 değerli değişkenler üzerinde boole işlemlerini doğrusal kısıtlamalar kullanarak ifade etmek istiyorum. Bunu nasıl yapabilirim?

Daha spesifik olarak, (boolean AND), (boolean VEYA) ve (boolean NOT) ayarlamak istiyorum. 0 / 1'in açık yorumunu Boolean değerleri olarak kullanıyorum: 0 = false, 1 = true. Nasıl ILP'sinin kısıtlamaları sağlamak için yazıyorsunuz 'ın ilgili olarak s istenen'?y 2 = x 1x 2 y 3 = ¬ x 1 y i x iy1=x1x2y2=x1x2y3=¬x1ybenxben

(Bu, CircuitSAT'ten ILP'ye bir azalma veya SAT'yi ILP olarak ifade etmenin bir yolunu istemek olarak görülebilir, ancak burada yukarıda gösterilen mantıksal işlemleri kodlamak için açık bir yol görmek istiyorum.)

Yanıtlar:


66

Mantıksal ve: lineer kısıtlamalar kullanın y1x1+x2-1 , y1x1 , y1x2 , 0y11 , y1 bir tamsayı olduğu sınırlanmıştır. Bu istenen ilişkiyi zorlar. (Bunu sadece doğrusal eşitsizliklerle yapabildiğiniz için çok temiz , öyle mi?)

Mantıksal OR: lineer kısıtlamalar kullanın y2x1+x2 , y2x1 , y2x2 , 0y21 , y2 , bir tam sayı olduğu sınırlanmıştır.

Mantıksal değil: Kullanım y3=1-x1 .

Mantıksal ima: ifade etmek için y4=(x1x2) (yani, y4=¬x1x2 mantıksal VEYA için), uyum konstrüksiyonunda. Özel olarak, lineer kısıtlamalar kullanımı y41-x1+x2 , y41-x1 , y4x2 , 0y41 ,y4 kısıtlı bir tam sayı olduğu.

Zorunlu mantıksal uygulama: x1x2 tutması gerektiğini ifade etmek için, sadece x1x2 doğrusal sınırını kullanın ( x1 ve x2 zaten boole değerleriyle sınırlı olduğu varsayılarak ).

XOR: y5=x1x2 (münhasır veya x1 ve x2 ) ifadesini ifade etmek için , y5x1+x2 , y5x1-x2 , y5x2-x1 doğrusal eşitsizlikleri kullanın 2 - x 1 , y52-x1-x2 , 0y51 ,y5 bir tam sayı olması sınırlanmıştır.


Ve bir bonus olarak, sıfır-bir (boolean) değişkenlerle tamsayı değişkenlerinin bir karışımını içeren problemleri formüle ederken sıklıkla yardımcı olan bir teknik daha:

Boolean (versiyon 1) yayınla: bir tamsayı değişken olduğunu varsayalım x ve tanımlamak istediğiniz y ki y=1 ise x0 ve y=0 ise x=0 . Ayrıca 0xU olduğunu biliyorsanız , o zaman doğrusal eşitsizlikleri 0y1 , yx , xUy ; ancak, bu yalnızca bir üst ve alt sınır bağlı olduğunu biliyorsanız çalışır.x . Veya, eğer biliyorsan|x|U (yani,UxU ) bazı sabitU , o zamanburadaaçıklanan yöntemi kullanabilirsiniz. Bu, yalnızca|x|.

Boolean için Oyuncular (sürüm 2): Aynı hedefi göz önüne alalım, ama şimdi x üzerinde bir üst sınır tanımıyoruz . Ancak, x0 olduğunu bildiğimizi varsayalım . İşte bu kısıtlamayı lineer bir sistemde nasıl ifade edebileceğinizi açıklayabilirsiniz. İlk önce, yeni bir tamsayı değişkeni t . Eşitsizlikler ekleyin 0y1 , yx , t=xy . Eğer en aza indirmek, böylece Sonra, objektif fonksiyonu seçmek t . Bu sadece zaten nesnel bir işleve sahip değilseniz işe yarar. Eğer n varsanNegatif olmayan tamsayı değişkenleri x1,...,xn böylece ve, boole için hepsini döküm istiyorum yben=1 eğer xben1 ve yben=0 eğer xben=0 , o zaman tanıtabilirsiniz n değişkenler t1,,tn eşitsizlikleri ile 0yi1 , yixi ,ti=xiyi ve değerlerinit1++tn asgariye indirmek için amaç işlevini tanımlayın. Yine, bu sadece nesnel bir işlev tanımlamak için başka hiçbir şeyin işe yaramadığı durumlarda (eğer yayınlar dışında, boolean dışında, sonuçta elde edilen ILP'nin fizibilitesini kontrol etmeyi planlıyorsanız, değişkenlerin bazı fonksiyonlarını en aza indirmeye / en üst düzeye çıkarmaya çalışmıyorsanız).


Bazı mükemmel uygulama problemleri ve çalışılmış örnekler için Tamsayılı Doğrusal Programları Formüle Etme: Bir Rogues 'Gallery .


hangi doğrusal programlama çözücüsü bunu çözebilir? çünkü * .lp veya * .mps-format, kısıtlamanın bir tarafının sabit bir tamsayı olması ve değişken olmaması gerekir.
boxi

4
@ boxi, * .lp veya * .mps formatı hakkında hiçbir şey bilmiyorum, ancak her tamsayılı doğrusal programlama çözücüsü bunu çözebilmelidir. gibi bir şeyiniz varsa , bunun istediğiniz biçimde olabilecek y - x 0 ile eşdeğer olduğunu unutmayın. xyy-x0
DW

-Ben tekrar kontrol ettim. lp_solve çözebilir, ancak örneğin qsopt çözemez. neden bilmiyorum ama teşekkürler <3
boxi

@boxi, sadece QSopt çevrimiçi uygulaması GUI kontrol ettiğimizde değişti kez kısıtlamalar bu tür ele verebilir için x - y 0 , bu yüzden neler olduğunu emin değilim. (Ben * .lp formatını kullandım.) Herhangi bir ILP çözücüsü bu sistemleri kullanamadığında şaşırırdım. QSopt hakkında daha fazla sorunuz varsa, muhtemelen onları QSopt destek forumlarına götürmelisiniz. xyx-y0
DW

1
@Podod, iyi yakala! Bu hatayı tespit ettiğiniz için teşekkür ederiz. Kesinlikle haklısın. Bu davanın nasıl modelleneceği hakkında yeni bir soru sordum ve bir cevabı bulduğumuzda bu cevabı güncelleyeceğim.
DW

19

Mantıksal AND ilişkisi (diğer çözümde olduğu gibi) üç sınırlama yerine bir aralık sınırında modellenebilir . Yani üç kısıtlama yerine y 1x 1 + x 2 - 1 , tek aralık kısıtlaması 0 x 1 + x 2 - 2 y 11 kullanılarak yazılabilir.

y1x1+x2-1,y1x1,y1x2,
Benzer şekilde, mantıksal OR için: 0 2 y 1 - x 1 - x 21
0x1+x2-2y11.
02y1-x1-x21.

NOT için böyle bir gelişme yoktur.

y=x1x2xnn

0Σxben-nyn-1.
0ny-Σxbenn-1.

Bu yazıda çok benzeyen bir
Mahmoud Amer

3

XOR y = x1⊕x2 için daha kısa bir çözüm buldum (x ve y ikili 0, 1'dir)

sadece bir satır: x1 + x2 - 2 * z = y (z herhangi bir tamsayıdır)


x1=1,x2=0,z=200,y=-1990y1

b
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.