1

有人可以帮我理解迷你锌教程中的几件事:

function set of $T: 'intersect'(set of $T: x, set of $T: y)

这将返回集合 x 和 y 的交集。显然 x 和 y 是集合 - 但是 $T 在这种情况下意味着什么?

function var set of int: 'union'(var set of int: x, var set of int: y)

返回集合 x 和 y 的并集。据我了解,x 是一组整数,y 也是一组整数 - 但“var set of int”是什么意思?什么是'var'?

function set of $U: array_union(array [$T] of set of $U: x)

返回数组 x 中集合的并集。你能解释一下:

function set of $U

和:

array_union(array [$T] of set of $U: x)
4

1 回答 1

2

$T$U表示任何类型。$T可以是int,float等。如果它说int,那么你必须提供 a int,但如果它说$T,你可以提供任何类型。

在表达式function set of $U: array_union(array [$T] of set of $U: x)中,$Uand$T可以是不同的类型,但function set of $T: 'intersect'(set of $T: x, set of $T: y)$T必须相同。不同的变量$只是意味着它们可以是不同的类型。相同的变量$名称并且都需要具有相同的类型。

示例:function set of float: array_union(array [int] of set of float: x)function set of int: 'intersect'(set of int: x, set of int: y)

array [$T]有点特殊,只是意味着数组可以是任意维度的。即array [int]array [int,int]array [int,int,int,int,int]等等。所以array [$T] of set of $U意味着我们有一个大小为 的数组$T,例如[int,int],一个二维数组。这个数组充满了任何类型的集合。例如整数集,例如 {1,4,7,145}。

var int并且int是不同的类型。int只是普通的数字。var int是变量整数,即 MiniZinc 试图为其赋值并解决问题的那些变量。

例如var 1..150: age,或者 var int: age如果我们想解决一些年龄问题。

于 2016-08-16T09:50:41.990 回答