Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing minizing中字符串约束的求解_Parsing_Minizinc - Fatal编程技术网

Parsing minizing中字符串约束的求解

Parsing minizing中字符串约束的求解,parsing,minizinc,Parsing,Minizinc,我试图用Minizin中的字符串连接运算符定义约束,求解变量a和b: 尽管如此,这似乎是一个语法错误: MiniZinc: type error: type error in operator application for `++'. No matching operator found with left-hand side type `string' and right-hand side type `var string' 使用字符串或数组作为变量,在Minizing中仍然可以解决约束

我试图用Minizin中的字符串连接运算符定义约束,求解变量a和b:

尽管如此,这似乎是一个语法错误:

MiniZinc: type error: type error in operator application for `++'. No matching operator found with left-hand side type `string' and right-hand side type `var string'

使用字符串或数组作为变量,在Minizing中仍然可以解决约束吗?

直接对字符串进行约束在约束编程社区中非常少见。在这方面有一些研究,尽管我还没有看到任何支持字符串变量的通用CP系统。非通用CP系统见下文

在Minizing中,最好将字符串转换为整数,例如a=1、b=2等,然后将所有操作模拟为整数操作

一个简单的示例是纵横字谜生成器:,如中所述

一个重要的字符串操作是两个字符串的串联,但由于Minizin仅支持静态固定长度数组,因此必须通过定义足够大的目标数组来处理

关于Picat,cp/sat模块也不支持字符串,因此必须应用相同的整数转换。但由于Picat是一种逻辑编程语言,因此可以使用传统的逻辑编程方法

请注意,Minizing和Picat以及大多数其他CP系统都支持全局约束规则,该规则使用DFA确定性有限自动机来创建约束。例如,请参见非图解算器:和全局连续性约束的分解:

Minizing还支持常规约束的NFA非确定性变体


也就是说,有些系统使用一种支持字符串变量的约束解决方法,尽管它们倾向于只支持字符串变量,而不支持整数、集合等的一般指令集。例如,请参见Hampi。注意:我已经很久没有检查这些专用系统了

@hakank这在其他约束编程语言(如Picat)中也可能实现吗?特别适合这项任务。它们与Prolog中的类似,但它们似乎更通用。
MiniZinc: type error: type error in operator application for `++'. No matching operator found with left-hand side type `string' and right-hand side type `var string'