跳到内容

cddlib

存储库文件导航

cddlib公司

C库cddlib是双重描述方法用于生成所有顶点(即极点)和极值R中一般凸多面体的射线d日由以下系统提供线性不等式:

P={x=(x1, ..., x个d日)T型:b-A·x≥0}

其中A是给定的m×d实矩阵,b是给定的m向量,0是m向量所有零。

该程序可用于反向操作(即凸包计算)。这意味着人们可以在不平等之间来回移动表示和生成器(即顶点和射线)表示带有cddlib的多面体。cddlib还可以解决线性规划问题,即最大化和最小化P上的线性函数的问题。

报告问题

如果您发现一些问题或漏洞,请向我们的问题跟踪器.

文档

这个文档仍然不完整,但包含对最重要功能的描述。请看一下示例了解如何使用库函数在用户的C代码中。

H表示和V多面体

cddlib的一个方便特性是能够处理基本上任何数据。更准确地说,它可以生成V多面体的H表示,即不是全维的,它可以生成H多面体的V表示它没有极端点。

数值问题

需要谨慎一点。使用cddlib的浮动版本。众所周知,浮点计算可能不会给出正确的答案,尤其是当输入数据非常对小扰动敏感。当观察到一些奇怪的行为时创建输入的有理近似总是明智的(例如,可以将0.3333333替换为1/3),并使用编译的cddlib进行计算GMP合理性看看什么是正确的行为。当时间不重要时,使用GMP有理算法更安全。

如果需要使用浮点运算进行快速计算,可能需要常数地址(_almostzero)定义于cdd。小时:

#定义dd_almostzero 1.0E-6

此数字用于识别数字是否为零:绝对值小于dd_almostzero地址被视为零和非零否则。您可能希望更改此设置以修改cddlib的行为。另一件事是缩放。如果输入的一列中的值为比另一列中的数值小,缩放一列,以便变得具有可比性。

构建最新发布的版本

从我们的发布第页并使用构建cddlib

tar zxf cddlib-*.tar.gz光盘cddlib-*./配置制作

将cddlib安装到/usr/本地类型

sudo make安装

要将您自己的代码与cddlib链接,请使用以下命令调用编译器

gcc-I/usr/local/include-L/usr/local/lib YOUR_CODE.c-lcdd

或者,如果您想使用药品GMP,使用

gcc-I/usr/local/include-L/usr/local/lib-DGMPRATIONAL YOUR_CODE.c-lcddgmp-lgmp

从源代码库生成

与上述类似,您可以从我们的github存储库具有

git克隆https://github.com/cddlib/cddlib.git光盘cddlib./引导./配置制作

联系作者

库cddlib是免费软件,但如果cddlibs变得有用,请给作者提到什么目的以及cddlib的使用方式。最强大的免费支持软件开发是用户的欣赏。