Maximize distance between variables' value in SWI-Prolog(clpfd) -


मैं दो चर के बीच अंतर को अधिकतम करना चाहता हूं:

 : - use_module (library ( clpfd))। अधिकतम (एक्स): - एक्स = [ए, बी], एक्स इन्स 1..5,% मैं ए और बी के बीच अधिकतम अंतर रखने के लिए एक बाधा लिखना चाहता हूं।    < P> 

अधिकतम अंतर व्यक्त करने के लिए कोई बाधा नहीं है। अधिकतम 1 को अभिव्यक्त करने के लिए कोई बाधा नहीं है। इस तरह के निर्माण की अनुमति के लिए मात्रा का ठहराव के कुछ फार्म आवश्यक होगा।

हालांकि, कुछ संबंधित है: आप ऐसे मूल्यों को उत्पन्न करना चाह सकते हैं, जो सबसे बड़ा मान पहले उत्पन्न होता है:

 : - use_module (पुस्तकालय (clpfd))। अधिकतम (एक्स): - एक्सएस = [ए, बी], एक्सएस इंस 1..5, लेबलिंग ([अधिकतम (ए बी (ए-बी)), एक्सएस)। ? - अधिकतम करें (एक्सएस) एक्स = [1, 5]; एक्स = [5, 1]; एक्स = [1, 4]; एक्स = [2, 5]; Xs = [4, 1] ...   

तो यह सबसे बड़ी दूरी से शुरू होता है और फिर इसे एक-एक करके कम करता है।

सबसे पहले यह व्यवहार आश्चर्यचकित हो सकता है

लेबलिंग हमेशा पूर्ण होता है, हमेशा समाप्त होता है, और कोई बेमानी समाधान नहीं देता है।

यह एक बहुत मजबूत गारंटी है!

यदि आप अब पहले समाधान चाहते हैं, तो एक बार / 1 के आसपास लेबलिंग / 2 लपेटें, लेकिन ध्यान रखें कि आपने शुद्ध, मोनोटोनिक कार्यक्रमों के दायरे को छोड़ दिया ।


फुटनोट 1: अधिकतम अधिकतम दो चर अधिकतम (एक्स, वाई) को व्यक्त करना संभव है, लेकिन यह अधिकतम अधिकतम मूल्य को अधिकतम करने के लिए बाधित नहीं करता है ! यह केवल X और वाई का सबसे बड़ा मान होगा।

Comments

Popular posts from this blog

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -

jasper reports - How to center align barcode using jasperreports and barcode4j -

django - CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False -