CN1910601A - 限制条件解决方法、限制条件解决装置、以及限制条件解决系统 - Google Patents
限制条件解决方法、限制条件解决装置、以及限制条件解决系统 Download PDFInfo
- Publication number
- CN1910601A CN1910601A CNA2005800029969A CN200580002996A CN1910601A CN 1910601 A CN1910601 A CN 1910601A CN A2005800029969 A CNA2005800029969 A CN A2005800029969A CN 200580002996 A CN200580002996 A CN 200580002996A CN 1910601 A CN1910601 A CN 1910601A
- Authority
- CN
- China
- Prior art keywords
- restrictive condition
- value
- condition
- variate
- variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- General Physics & Mathematics (AREA)
- Development Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- General Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Game Theory and Decision Science (AREA)
- Operations Research (AREA)
- Data Mining & Analysis (AREA)
- Marketing (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本发明的目的在于不记述作为计算机上的数据处理步骤的算法,用少的计算时间可靠地解决对象问题。作为解决手段,构成为由变量值设定单元(2)设定了与对象问题有关的限制条件以及该限制条件所使用的变量的初始值或变动值时,重复进行以下工作:限制条件提取单元(3)提取与该变量相关联的限制条件,限制条件解计算单元(4)依次求每个限制条件的解,变量值再设定单元(5)将该求出的解作为新的变量值来求各限制条件的解,所以求解的条理变得明确,同时对格外简化后的各限制条件进行求解即可,因此可以可靠地到达最终的解,由此,可以使运算处理格外地高速化。
Description
技术领域
本发明涉及对于由任意的限制条件构成的问题的有效解决,特别涉及仅通过考虑了限制传播的处理步骤的限制条件以及变量值的设定就可以执行的限制条件解决方法、限制条件解决装置、以及限制条件解决系统。
背景技术
对于各种应用程序的当前的一般的编程方法的主流是,例如,在使用C语言、JAVA等这样的编程语言,在以过程方式声明数据结构的基础上,用户依次记述该数据的处理步骤(算法)的过程型编程方法。如果除了通过编译器的优化功能而实现优化等,则原则上该过程型编程方法所实现的数据的处理步骤与计算机实际执行的处理步骤一致。从而,过程型编程方法是通过详细地叙述计算机(CPU)的动作而可以灵活地应对各种问题的解决方法。
作为与这样的记述CPU的动作的过程型编程方法对应的方法,有声明式编程方法。这是由用户定义与对象问题对应的限制条件后,对于此后的实际的数据处理步骤全部交付给CPU的方法,作为在特定的问题领域适用的问题解决方法而一直在使用(例如,专利文献1或专利文献2)。
在所述声明式编程中具有如下的特征,用户仅记述限制条件来等待输出解即可,另一方面,无法干涉CPU以怎样的步骤进行数据处理。在当前的计算机环境中,主要使用如前所述的大体分为两类的编程方法中的过程型编程方法。
在通过该过程型编程方法进行程序开发的情况下,几乎都是在用户进行数据结构的定义的时刻,事实上也联动地决定了应由该数据结构记述的算法。而且,该算法在类似的对象问题中以同样的步骤表现,可以模式化。
因此,多数情况是在各应用中重复进行相同的编程作业,程序开发的低效以往就成为了问题。为了处理该问题,目前通过基于通用的编程部分的程序库化或面向对象的软件开发积极地导入软件的部件化,正在推进集中于现存的程序中没有的部分的程序作业的高效率化。
专利文献1:日本特开平5-3548号公报
专利文献2:日本特开平9-81387号公报
发明内容
但是,现实中被程序库化的软件部件庞大并且其数目逐年增加。各程序员从该庞大的部件组中提取最适合对象问题的部件时,有不少选择错误,考虑到存在必须通过再次重新选择而重新进行开发作业的危险性时,存在不利用软件部件而各程序员从头开始进行编码作业的情况也很多的问题。
此外,面向对象的软件开发要求一定的技术,因此不一定任何的程序员都能进行面向对象的编程作业,在整体上看存在作业效率并不怎么提高的问题。
这样,现状是存在在程序开发作业中依然未解决依赖于个人技术的封闭的方面或无效率的方面的问题。
另一方面,如前所述,在声明式编程方法中,至少需要限制条件的记述和该限制条件所使用的数据值,在应用于实际的问题的情况下,该限制条件以及数据的数量非常多。这里,实际的问题例如是满足fk(X1,X2,…,Xn)≤bk(k=1,2,…,m)的联立式,并且使评价函数f0(X1,X2,…,Xn)为最小值这样的组合优化问题。换言之,如图17所示,将m个联立式以及评价函数f0所表示的限制条件提供给计算机侧时,计算机(图17的限制消除系统)进行统一搜索同时满足所有的限制条件的数据的工作。
该组合优化问题由于变量X以及联立式的数量越增加则解空间中的组合的可能性按指数函数形式增加,因此计算机上的处理变得复杂而且庞大。而且,特别在函数fk为非线性函数的情况下,有时也存在分散的多个解空间,为了不一味地搜索不存在解的解空间而陷入无限循环中,需要做出高效率地求解的努力等。另外,除了组合优化问题之外,对于组合充分问题、整数规划法等也存在同样的问题。
进而,在产生变更限制条件的条件式或输入数据的一部分的需要时,不得不从最初开始重新计算先前计算出的同样的限制条件问题,存在造成资源的浪费,同时非常无效率的问题。
因此,本发明鉴于上述问题,目的在于不记述作为计算机上的数据处理步骤的算法而用少的计算时间可靠地解决对象问题。
本发明的限制条件解决方法的特征在于,包括:限制条件输入处理,由用户输入考虑了与对象问题有关的限制传播的处理步骤的限制条件;变量值设定处理,设定通过所述限制条件输入处理输入的限制条件所使用的变量的初始值或变动值;限制条件提取处理,从通过所述限制条件输入处理输入的限制条件中提取与通过所述变量值设定处理设定的值有关的限制条件;限制条件解计算处理,基于由所述用户考虑到的限制传播的处理步骤,对通过所述限制条件提取处理提取出的所有限制条件代入所述变量的初始值或变动值,计算该限制条件的解;以及变量值再设定处理,将通过所述限制条件解计算处理计算出的解设定为所述变量值设定处理中的新的变动值,所述变量值再设定处理中存在再设定的新的变动值的期间,反复进行所述限制条件提取处理以及所述限制条件解计算处理。
本发明的限制条件解决方法包括:限制条件输入处理,输入限制条件;变量值设定处理,设定通过所述限制条件输入处理输入的限制条件所使用的变量的值;限制条件提取处理,从通过所述限制条件输入处理输入的限制条件中提取与通过所述变量值设定处理设定的值有关的限制条件;以及限制条件解计算处理,计算通过所述限制条件提取处理提取出的限制条件的解,其特征在于,所述限制条件至少由下述情况中的至少任何一种构成:包含当前的数组元素数、使所述变量具有多个值、包含基于结构体数组的元素值的检索、以及基于默认规则的字符串数值变换。
本发明的限制条件解决装置的特征在于,包括:限制条件输入单元,其由用户输入考虑了与对象问题有关的限制传播的处理步骤的限制条件;变量值设定单元,其设定由所述限制条件输入单元输入的限制条件所使用的变量的初始值或变动值;限制条件提取单元,其从由所述限制条件输入单元输入的限制条件中提取与由所述变量值设定单元设定的值有关的限制条件;限制条件解计算单元,其基于由所述用户考虑到的限制传播的处理步骤,对由所述限制条件提取单元提取出的所有限制条件代入所述变量的初始值或变动值,计算该限制条件的解;以及变量值再设定单元,其将由所述限制条件解计算单元计算出的解设定为所述变量值设定单元中的新的变动值,所述变量值再设定单元产生再设定的新的变动值的期间,由所述限制条件提取单元以及所述限制条件解计算单元反复进行。
本发明的限制条件解决装置包括:限制条件输入单元,其输入限制条件;变量值设定单元,其设定由所述限制条件输入单元输入的限制条件所使用的变量的值;限制条件提取单元,其从由所述限制条件输入单元输入的限制条件中提取与由所述变量值设定单元设定的值有关的限制条件;以及限制条件解计算单元,其计算由所述限制条件提取单元提取出的限制条件的解,其特征在于,所述限制条件由下述情况中的至少任何一种构成:包含当前的数组元素数、使所述变量持有多个值、包含基于结构体数组的元素值的检索、以及基于默认规则的字符串数值变换。
本发明的限制条件解决系统可互相通信地连接了多个设备,其特征在于,上述设备中至少一个设备具有前述任何一项中记载的限制条件解决装置的功能。
根据本发明,输入考虑了对于对象问题的限制传播的处理步骤的限制条件以及限制条件所使用的变量的值(初始值)时,重复以下处理,即在提取了与该变量的值相关联的限制条件的基础上导出分别满足该限制条件的解,同时作为变量的新的值(变动值)而代入所导出的解,求所述各限制条件的解,所以可以不具有与其它的限制条件的“与”关系而求各限制条件单独的解,可以一边高速地进行计算处理一边得到最终解。
附图说明
图1是表示本发明的第一实施方式中的限制条件解决装置的基本的构成要素的整体结构图。
图2是表示本发明的第一实施方式中的限制条件解决装置的动作步骤的流程图。
图3是本发明的第二实施方式中的限制条件解决装置的整体结构图。
图4是表示第一实施方式中的限制条件解决装置的限制条件存储单元对计算机的存储区域存储限制条件的方式例子的图。
图5是表示与会计计算问题有关的数据结构的一例的图。
图6是表示与会计计算问题有关的限制条件的存储方式的一例的图。
图7是表示数据结构的一例的图。
图8是本发明的第三实施方式中的限制条件解决装置的整体结构图。
图9是表示通过限制条件提取单元实现的解决方法的执行步骤的图。
图10是本发明的第四实施方式中的限制条件解决装置的整体结构图。
图11是与Web服务器组合进行数据显示的系统的概念图。
图12(a)-(b)是表示在图11所示的系统中,在函数类型定义保持单元以及限制条件存储单元中存储的信息或限制条件的一例的图。
图13是表示在一般的窗口界面中,用限制条件记述数据和用户界面的关系的一例的图。
图14是表示多窗口系统的一例的图。
图15是概念性地表示实现窗口系统的客户端/服务器系统中的客户端侧的结构的图。
图16是用于说明在GUI客户端中,GUI控制部控制各部分的动作的图。
图17是表示现有的声明式编程方法中的解法步骤的图。
图18是概念性地表示现有的编程语言环境和本发明的限制条件的求解的限制消除系统的定位的图。
图19是概念性地表示现有的编程语言环境的构成的图。
图20是表示与将数据定义和限制式集中的类化相关的概念的图。
图21是表示访问数组结构的限制条件时的运算符例子的图。
图22是表示将通常的LISP语言的内部数据结构极简化的一例的图。
图23是表示可以双向追溯LISP语言的基本数据结构的一例的图。
图24(a)-(h)是表示用户输入限制条件以及值,输出计算结果等的画面例子的图。
符号说明
1 限制条件输入单元
2 变量值设定单元
3 限制条件提取单元
4 限制条件解计算单元
5 变量值再设定单元
6 限制条件存储单元
7 变量值存储单元
8 限制条件提取单元
9 函数定义保持单元
10 函数定义执行单元
11 数据库
12 系统资源
100 限制条件解决装置
300 限制条件解决装置
300 限制条件解决装置
400 限制条件解决装置
具体实施方式
以下,参照附图详细说明本发明的优选的实施方式。
图18是概念性地表示现有的编程语言环境和对本发明的限制条件进行求解的限制消除系统的定位的图。如图18所示,现有的编程语言环境中有程序语言处理系统、程序代码、数据,程序语言处理系统为控制程序代码以及数据的形式。在本发明中,其结构为除了现有的编程语言环境中的数据之外,还具有限制式(限制条件)以及限制消除系统,是连接成各自可互相进行信息交换的结构。
此外,图19也是现有的编程语言环境,是以程序库的形式构成所述现有的限制消除系统时的结构图。
(第一实施方式)
首先,说明本发明的第一实施方式中的限制条件解决装置的基本结构及其基本动作。
<限制条件解决装置100的基本结构>
图1是表示限制条件解决装置100的基本的构成要素的整体结构图。
如图1所示,限制条件解决装置100包含:限制条件输入单元1、变量值设定单元2、限制条件提取单元3、限制条件解计算单元4、变量值再设定单元5。
限制条件输入单元1用于用户输入在头脑中浮现计算机(CPU)实现的限制传播的处理步骤而决定的限制条件。
变量值设定单元2用于对构成由限制条件输入单元1输入的限制条件的各变量设定用户指定的具体的初始值。此外,后面详细叙述,对于各变量也设定初始值以外的值(以下,称作变动值)。
此外,限制条件输入单元1以及变量值设定单元2是所谓用于数据输入的U/I,不特别限定,包含可以容易地进行输入的各种工具,可以具有能确认用户输入的值的显示(监视)画面。另外,也可以构成为具有对用户提示由限制条件解决装置100计算出的值的输出显示单元(未图示)。该输出显示单元也可以具有能确认输出值的显示(监视)画面。进而,作为限制条件输入单元1(包含变量值设定单元2)以及输出显示单元之一,也可以是可以进行数据的输入输出的输入输出单元。
限制条件提取单元3从所输入的限制条件中提取具有设定了初始值或变动值的各变量作为构成元素的限制条件。在本实施方式中,限制条件提取单元3构成为集中提取相应的限制条件,但也可以依次重复:在通过后述的限制条件解计算单元4求出了某一个限制条件的解之后提取下一个限制条件,这样地一个一个进行提取。
限制条件解计算单元4求解代入初始值或变动值后的各限制条件,但作为本发明的特征,不是作为满足所有限制条件的所谓的联立解而统一求解,而是一次以一个各限制条件为对象来求解。因此,某一变量的值被设定或变更时,以顺序方式按照规定的顺序依次求限制条件的第一次的解。这里,所述规定的顺序是由用户(程序员)考虑限制传播的处理步骤而输入的限制条件所表示的顺序。
这里,限制条件的具体例子如下所示。
(A)限制条件的例子1
作为为了容易地理解声明式编程方法而作为说明使用的典型的例题,举出以下的会计计算问题。
现将四个物品的价格和个数分别设为(1)100日元、2个,(2)200日元,3个,(3)300日元,2个,(4)50日元,3个时,如果使用价格、个数以及小计的数组变量来表示本发明所说的限制条件,则为
价格[1]=100,价格[2]=200,价格[3]=300,价格[4]=50…(式1)
个数[1]=2,个数[2]=3,个数[3]=2,个数[4]=3…(式2)
小计[i]=价格[i]×个数[i](i=1~4)…(式3)
合计=∑小计[i](i=1~4)…(式4)。
(式1)以及(式2)是限制条件中的特别是变量数据的设定。
从所述(式1)~(式4)的记述可知,在过程型编程的情况下所需的0→合计(→表示代入,以下相同)、合计+小计[1]→合计、合计+小计[2]→合计、合计+小计[3]→合计、合计+小计[4]→合计的重复循环的记述在声明式编程的情况下是不需要的。
(B)限制条件的例子2
string name,message,outputs,output;…(式5)
name=“专利太郎”…(式6)
message=“您好。该文章是HTML文件的书。”…(式7)
outputs=“姓名”& name &“消息”& message;…(式8)
output=“<HTML><BODY>”& outputs & </BODY></HTML>…
(式9)
所述(式5)是变量数据的定义,(式6)~(式7)是对变量的值代入,以及所述(式8)~(式9)是具体的执行式。此外,&运算符是字符串连接运算符。如所述(式6)~(式7)这样,任意地改写字符串name、message而生成由output输出的HTML用文本。
(C)限制条件的例子3
下面表示记述了对字符串str依次连接其他的字符串add的动作的限制条件。
string str; …(式10)
string add; …(式11)
str=str & add …(式12)
所述(式10)以及(式11)是变量数据的定义,所述(式12)是具体的执行式。本例中的字符串str的值变更引起的限制传播在每次字符串add的值被变更时,重复对字符串str追加字符串add的值。
这里,请注意限制条件不必是如所述(A)~(C)所示的等号或不等号所表示的表达式。而且,限制式的评价最终以真或假作为回答,与C语言等同样,例如仅以f(x)作为限制条件记述的情况下,执行该f(x),根据结果为真或假来判断并处理。
变量值再设定单元5为了通过限制条件提取单元3以及限制条件解计算单元4来求出第2次以后的解,将由限制条件解计算单元4求出的第1次的解设定为各变量的新的值、即变动值。然后,在不存在由限制条件解计算单元4变更的解而到达最终解之后,限制条件解决装置100另外收到结束指令时,求一系列限制条件的解的处理结束。
如前所述,本发明的特征之一是重复进行将值代入提取出的各限制条件的变量而依次求解一个一个限制条件。为此,前提是考虑限制传播的处理步骤而由用户预先针对限制条件而进行设定。
另外,在限制条件解决装置100的处理中,陷入了不能求解的不能解、或不能确定解的解不定的状态的情况下,通过执行计算机中预先定义的适当的例外处理,作为程序错误输出,而这表示用户定义了无法求解的限制条件。在本实施方式的限制条件解决装置100中,用户担负不得不设定考虑了计算机的处理步骤的限制条件的负担,成为本来应求解的处理步骤,但这与现有的过程型编程作业相比已经是很轻松的作业了。
<限制条件解决装置100的整体动作>
接着,说明所述结构的限制条件解决装置100的整体动作。
图2是表示限制条件解决装置100的动作步骤的流程图。
首先,在步骤S20中,判断对限制条件所使用的变量是否设定了初始值。所述判断的结果,在还未对构成限制条件输入单元1所输入的限制条件的各变量设定初始值的情况下,在步骤S21中,变量值设定单元2设定用户指定的初始值。
接着,在步骤S22中,限制条件提取单元3判断各变量的值是否未被变更。在作为限制条件对变量设定了初始值时,作为最初的变更进至下一步骤S22。在一次设定初始值之后,后述的步骤的处理结束时,限制条件解决装置100在该步骤S22中维持等待的状态,直到有新的变量的值变更。另外,本流程图未示出‘结束’,但在从外部输入了动作结束指示命令时,限制条件解决装置100控制为执行规定的动作处理(未图示)而结束一系列的动作。
在步骤S23中,限制条件提取单元3生成以在步骤S22中变更后的变量为元素的集合S。这里,生成集合S表示例如在计算机上的某一存储区域中写入所述变更后的变量的名称或可以识别变量的数组元素的下标等。
进而,限制条件提取单元3判断所述集合S中是否存在元素,即是否有由变量值设定单元2变更了值的变量(步骤S24)。所述判断的结果,在集合S中有元素时(集合S不是空集时),限制条件提取单元3从集合S中每次取出一个元素Sm(步骤S25)。
接着,在步骤S26中,生成与所述取出的元素Sm相关联的限制条件的集合Q。也就是说,如果有包含元素Sm而构成的限制条件,则限制条件提取单元3将其输出到集合Q。接着,在步骤S27中,在所述集合Q中存在元素的期间,重复进行以下的步骤S28~步骤S30。
在步骤S28中,限制条件解计算单元4从集合Q中取出一个限制条件Qm。然后,限制条件解计算单元4求解在步骤S28中取出的限制条件Qm,求出为了满足限制条件Qm而应变更的变量及其值(步骤S29)。
这里,步骤S29中的处理的详细内容如下所示。
(1)检查是否满足限制条件Qm,在满足时结束本步骤S29。
(2)求为了满足限制条件Qm而应变更的变量及其值。
(3)检验所述(2)中求出的变量的值是否正确。
所述(2)作为步骤S29的处理是必需的,而对于其它的(1)以及(3)不一定也是这样。也可以由用户根据对象问题来判断是否需要,作为判断条件来明示或暗示地指示。
进而,在步骤S30中,变量值再设定单元5对步骤S29中求出的变量再设定所求出的值,在然后的处理中基于该再设定的值来求解限制条件。
从而,在某一变量被变更的情况下,如果有与该变量相关联的多个限制条件,则依次求出每个一个一个取出的限制条件的解,同时,由得到的解对集合S的最后部分追加该变量。
另一方面,由步骤S28取出限制条件Qm的结果,在步骤S27中判断为集合Q中没有元素的情况下,一系列的处理返回步骤24,从集合S取出下一个变量Sm而重复同样的处理。
其结果,在集合S中没有元素时,作为限制条件解决装置100的处理,相当于进入稳定状态的状态,如前所述,在对限制条件所使用的任意的变量设定新的值之前,在步骤S22中处于等待的状态。
在本实施方式中,在步骤S25中取出在集合S中包含多个变量Sm时的变量Sm的顺序,或在步骤S28中取出限制条件Qm的顺序,考虑限制传播的处理步骤,采用用户明示地指定该顺序(优先顺序)而使计算机进行的限制条件的设定方法。具体来说,例如,通过预先决定为该优先顺序是限制条件所记载的顺序来达成。以下表示其具体例。
再次使用所述会计计算问题。
限制条件为
价格[1]=100,价格[2]=200,价格[3]=300,价格[4]=50…(式1)
个数[1]=2,个数[2]=3,个数[3]=2,个数[4]=3…(式2)
小计[i]=价格[i]×个数[i](i=1~4)…(式3)
合计=∑小计[i](i=1~4)…(式4)。
所述(式1)~(式4)的记载顺序有含义。例如,第一个所记载的限制条件(限制式)的优先顺序最高,以下依次降低。在该情况下,表示优先通过(式1)以及(式2)对各变量设定值,(式3)、(式4)然后将限制式登记到计算机内部。
限制式的执行顺序在执行时决定,但从集合S、集合Q取出元素的顺序是不确定的。为了决定该顺序,作为明示的方法,有用记载顺序判断或对限制式设定优先顺序的方法。
此外,也可以是计算机(CPU)自动进行所述优先顺序的结构。在该情况下,用户需要设定由不管计算机以什么顺序进行、在计算过程中也不会产生矛盾的内容以及记载顺序构成的限制条件,但这是只要用户作为程序员而具备通常的知识或经验就能够容易地完成的作业。
接着,使用所述会计计算的例子,随着具体的限制条件的变量值的变化来说明图2的流程图所示的动作步骤。
例如,假设将价格[2]如200→250这样地变更时。由于不是初始值的设定而是数据的变更,所以从步骤S20进至步骤S22。通过步骤S23,成为集合S={价格[2]}。由于在步骤S24中判断为集合S中存在元素,所以在步骤S25中价格[2]被取出。
接着,在步骤S26中,作为仅与价格[2]相关联的限制条件的、小计[2]=价格[2]×个数[2]成为集合Q的元素。也就是说,生成集合Q={小计[2]=价格[2]×个数[2]}。
接着,由于在步骤S27中判断为集合Q中有元素,所以在步骤S28中,取出小计[2]=价格[2]×个数[2]的限制条件。在步骤S29中,计算限制条件的解,即小计[2]=250×3=750,在步骤S30中,对小计[2]设定该变更值750,对集合S追加小计[2],生成集合S={小计[2]}。
然后,返回步骤S27,由于从先前的集合Q中取出仅有的一个元素,集合Q为空集,所以此后进至步骤S24。
在步骤S24中,判断先前追加的集合S的小计[2],在步骤S25中取出该小计[2]。
接着,在步骤S26中,生成以作为仅与小计[2]相关联的限制条件的、合计=∑小计[i](i=1~4)作为元素的集合Q。也就是说,生成集合Q={合计=∑小计[i](i=1~4)}。在步骤S28中取出该限制条件,在步骤S29中,计算限制条件的解,即合计=200+750+600+150=1700,步骤S30中,对变量的(合计)设定该变更值1700。同时,对集合S存储变量的(合计)。接着,执行步骤S27、S24、S25、S26,由于存在有关联的限制式,所以集合Q中没有被追加的元素。
此时,为了缩短计算时间,可以如下地进行简化。即,在步骤S29中,在求限制条件的解时不是再一次进行加法运算,而是仅利用变化后的值来进行差分消除。然后,在步骤S30中,可知不存在与合计相关联的限制条件,所以为了缩短计算时间而不对集合S追加元素。
再次返回步骤S27,由于从先前的集合Q中取出仅有的一个元素,集合Q为空集,所以然后进至步骤S22,限制条件解决装置100接着处于等待状态直到有来自外部的数据变更为止。
另外,在所述限制条件解决装置100的动作中的步骤S28的处理中,说明了从集合Q一次取出一个限制条件Qm并求其解的处理,但不是必需一次取出一个。在可以同时求限制式的解的情况下,从集合Q中取出2或以上的限制条件。由此,可以进一步扩展可解决的对象问题。
进而,限制条件Qm的实际的解法不限于会计问题这样的通过简单的算式变形来求解的做法。与现有的算式有关的解法都可以使用,允许由此导入n次方程式的解法。
此外,作为其它的具体例,说明追加、删除限制条件所使用的数据的个数本身时的处理。
在所述会计计算的例子中,分别以数组来表现价格以及个数的变量,将数据个数固定为各4个而设定了限制条件,但考虑将数据个数本身作为变量时的限制条件。对当前的限制条件加上价格[5]、个数[5]而如下地进行变更。
价格[1]=100,价格[2]=250,价格[3]=300,价格[4]=50,价格[5]=310…(式13)
个数[1]=2,个数[2]=3,个数[3]=2,个数[4]=3,个数[5]=3…(式14)
项目总数=5…(式15)
小计[i]=价格[i]×个数[i](i为任意的整数)…(式16)
合计=∑小计[i](i=1~项目总数)…(式17)
如果完全同样地进行前述的处理,则成为
小计[5]=价格[5]×个数[5]=310×3=930,
合计=∑小计[i]=200+750+600+150+930=2630,可以导出解而不会残留未解决的限制条件。这样的变更在进行变量或限制条件的删除的情况下也同样,也可以变更由可变长度数组等表示的变量的个数。
对此,在图24中表示用户使用实际的输入输出单元(例如,限制条件输入单元1)输入限制条件以及值的画面例子。另外,图24的画面例子相当于具有输出功能的限制条件输入单元1以及变量值设定单元2的画面例子,是作为具有与一般的编程语言同等的输入输出界面的结构而安装在UNIX上的执行例子。图24(a)~(h)的输出输出为一系列的,为了方便而分开显示。
如图24(a)所示,首先,在‘$’所表示的UNIX提示后,用户输入‘ripple’(图24(b))。由此,安装了本发明的处理的程序被载入,在画面上表示‘%’,督促用户输入数据(%以后为用户的输入数据,换行之后的下一行显示接收到的数据值或计算输出值)。
因此,用户进行初始值限制式输入(图24(c)的241)。这里,242的限制式将合计计算抽象化为函数—数组总合计(),但也可以用如图21所示的限制式来表现。此外,也可以直接记述过程循环结构(参照与函数型语言的融合)。然后,在以步骤S29的处理实现合计计算的差分消除时,限制条件解决装置100侧进行判断而自动处理,用户意识不到。
接着,用户设定初始值(图24(d)的243、244)。执行步骤S22~步骤S30所示的处理,但为了实现执行的效率,在不是明显需要时,可以通过限制条件解决装置100侧的判断而不执行。图24(c)的245中,由‘load’从文件中读入剩余的输入值。在该时刻,小计、合计被计算而设定完毕,通过在246输入‘合计’,当前的合计值被显示而可以取得执行结果。输入图24(f)的247时,执行图2的步骤S26。然后,虽然没有计算中途的画面输出,但步骤S22~步骤S30所示的处理被执行,由248的输入显示执行结果的合计值。249、250的输入追加设定限制条件所使用的数据的个数。然后,由图24(g)的251的输入对执行结果显示合计值,通过图24(h)的252的输入来进行结束指令的发布。
此外,也可以构成为将几个数据定义和限制式集合而成的结构定义为类化概念中的一个类,提供参数而进行实例(即instance)化,将限制式和值作为一个组。由此,由于可以将设定的限制条件分割为多个,所以适于仅执行必要最小限度的处理的情况等。图20表示与该类化有关的概念。该类可以继承,例如,存在具有图20所示的变量1、变量2以及限制式1的类A、具有变量3的类B时,可以生成继承该类A以及类B、进而继承限制式2的图20的类。
另外,从本实施方式的限制条件解决装置100的结构以及动作可知,在本发明中,例如,未设定所有的限制条件不违反限制这样的评价式(评价条件)。在现有的声明式编程中,多数情况是进行如下处理:在求限制条件的解时,基于该评价式判断在限制条件间是否不矛盾。这是因为在本发明中,以在限制条件的设定时,用户设定为不产生矛盾为前提。从而,限制条件解决装置100最后一定可以求解,无法求出解时为用户的限制条件设定错误。
执行时不需要与限制违反的存在有关的评价式,但通过作为辅助功能来准备,当然对调试时等的问题发生时的处理或错误的发现有利。
根据本实施方式的限制条件解决装置100,由于构成为设定了与对象问题有关的限制条件以及该限制条件所使用的变量的初始值或变动值时,提取与该变量相关联的限制条件而依次求每个限制条件的解,将该求出的解作为新的变量值而重复求各限制条件的解,所以可以根据任意的数据结构和将该数据结构的数据间连接的限制条件来解决对象问题。
也就是说,所设定的限制条件被构成为不记述如现有的过程型编程这样的用于解决对象问题的算法,在数据结构中包含与该算法相当的指令的基础上,沿着限制传播的处理步骤记载,不求所有的限制条件成立的最佳解而每次求一个限制条件的解,所以求解的条理变得明确,同时求解格外简单化的各限制条件(例如,一元方程式)即可,因此可以可靠地达到最终的解,可以使运算处理格外高速化。
此外,由于可以在限制条件中直接记述问题的解决方法,因此用户不必一定具有如现有的编程语言的特殊专门知识,可以容易地解决对象问题。
(第二实施方式)
在所述第一实施方式中,在限制条件解决装置100中,构成为包含限制条件输入单元1、变量值设定单元2、限制条件提取单元3、限制条件解计算单元4、变量值再设定单元5,但在本实施方式的限制条件解决装置200中,特征在于,除了具有第一实施方式的限制条件解决装置100中的各构成单元1~5之外,还包括限制条件存储单元6以及变量值存储单元7。
另外,对于本实施方式的限制条件解决装置200的结构和第一实施方式中的限制条件解决装置100中共用的构成部分标以同一标号,并省略详细说明。
图3表示本实施方式的限制条件解决装置200的整体结构。
限制条件存储单元6将由限制条件输入单元1输入的限制条件存储在规定的存储区域中。此外,变量值存储单元7存储由变量值设定单元2设定的变量值(初始值、变动值)。
此外,本实施方式的限制条件提取单元8除了具有第一实施方式中的限制条件提取单元3的功能之外,还具有将新设定的限制条件或变动值与存储在所述存储区域中的限制条件或值进行比较,仅在两者不一致的情况下进行限制条件的提取的功能。另外,限制条件提取单元8不必总进行所述比较,当然也可以从限制条件存储单元6以及变量值存储单元7中提取限制条件以及变量值。
图4(a)是表示限制条件存储单元6对计算机的存储区域(例如,内存、磁盘等)存储限制条件的方式例子的图。换言之,假设存在由三个限制式(限制式1、限制式2、限制式3)参照变量X的限制条件,示出对该变量X设定了值246时的存储区域的表示方法。图6以及图5表示以该形式表示所述会计计算问题的限制条件时的一例。
例如图4(b)所示,算式(x=y+z)被分割后存储。其中,不限定为这样的表示方法。作为限制条件的存储方式,不必一定由值和限制式分割存储区域,例如,也可以不以限制式作为结构来分割而具有字符串等。
此外,不限于图5所示的数据结构,例如,也可以是以下所示的存储区域。
·变量的值分为多种,某一值仅被记录在存储器上,其它的值被记录到文件或数据库,从而可以使记录区域上的值变得永久,或者也可以在时刻系统等中具有特别的含义。
·也可以不必以指针表示变量名而直接具有。
·不必一定直接保持变量的值。
·在程序的编译时等不必识别变量,所以变量名不是必须的。
·限制条件所使用的限制式也可以不是列表。
·也可以不具有限制式列表,而如图7所示,是根据变量名来检索限制式的结构。但是,不限定为如图7所示的存储器和指针结构。
此外,假设包含通过上述变形而存在很多的数据类型的全部。
根据本实施方式的限制条件解决装置200,由于构成为在规定的记录区域中临时或永久地保持与对象问题有关的限制条件以及该限制条件所使用的变量的初始值或变动值,所以本实施方式的限制条件提取单元8可以进行如下处理,即仅在限制条件或变量值产生了变更的情况下,求解与变更后的变量Sm相关联的限制条件Qm,求为了满足Qm而应变更的变量及其值。
由此,产生即使限制条件存在变更,有时对于多个限制条件全部、不从最初起重新计算也可完成,可以实现计算时间的效率。
(第三实施方式)
在所述第一实施方式的限制条件解决装置100中,构成为包含:限制条件输入单元1、变量值设定单元2、限制条件提取单元3、限制条件解计算单元4、变量值再设定单元5,在所述第二实施方式的限制条件解决装置200中还具有限制条件存储单元6以及变量值存储单元7,但在本实施方式的限制条件解决装置300中,如图8所示,特征在于具有函数定义保持单元9以及函数定义执行单元10。
不论是第一实施方式的限制条件解决装置100和第二实施方式的限制条件解决装置200的哪一个,都可以采用还具有函数定义保持单元9和函数定义执行单元10的结构,但为了简化说明,以对限制条件解决装置100附加后的结构进行说明。
另外,对于本实施方式的限制条件解决装置300的结构和第一实施方式中的限制条件解决装置100中共用的构成部分标以同一标号,并省略详细说明。
从编程方法来看,本实施方式的限制条件解决装置300的结构具有的作用在于,相对于第一实施方式用完全的声明式编程方法进行问题解决,第三实施方式融合了现有的过程型编程方法。这是由于对于难以用声明式编程解决的一部分问题利用过程型编程方法,从而对于任何的对象问题都实现灵活的问题解决。
图8表示本实施方式的限制条件解决装置300的整体结构。
函数定义保持单元9保持用户通过限制条件输入单元1以及变量值设定单元2用现有的过程型编程记述的过程以及变量值。函数定义保持单元9与限制条件提取单元3连接成可以相互进行数据的输入输出。
另外,不必采用如本实施方式的限制条件输入单元1这样的、一定在限制条件以外还许可过程型的记述的结构。例如,也可以是另外具有过程型的记述专用的输入单元的结构。对于变量值设定单元2也同样,也可以具有以过程型记述的过程变量专用的变量值设定单元。
函数定义执行单元10使计算机实际地执行由函数定义保持单元9保持的过程。此外,函数定义执行单元10与限制条件解计算单元4连接成可以相互进行数据的输入输出。
以具体例说明本实施方式的限制条件解决装置300的处理。现假设在作为限制条件记述的限制式中包含y=sin(x)或y=没有反函数的函数(x)等的情况。
在该情况下,在图2所示的步骤S29中,为了求变量x的值,采用x=sin-1(y)这样的表达式变形进行了处理时,有时不能利用反函数sin-1的值域的关系来求x值。此外,y=没有反函数的函数f(x)时,不能根据y值求x值。在这样的时候,自由取入现有的过程型编程的用户函数来进行处理。
例如,在解限制式时,许可记述为可从多个中选择解决方法。如果将限制条件设为a=f(b),则为了求变量b的值,准备{a=f(b),b=f rev(a)},只要可以应用某一个,就可以求解限制式。
此外,在y=f(1,m)的限制式的变量1,m的值未被决定的情况下,或y>x这样的不等式的情况下,也不能简单地求解该限制式。在不等式y>x的情况下,在x的值为n时,仅得到y大于n的信息,可以说变量y的值未确定最终的解。在这样的情况下,也可以作为限制条件的设定错误进行处理之外,将y>n的信息直接代入与y有关的限制式中来继续进行处理。对于仅关注于一个方程式则不能求解的z=x+y也同样,通过许可在多个式和多个值之间处理联立方程式而可以解决。
由此,可以通过与其它的限制式的条件的关联来限定变量y的值,可以进一步缩窄,或者也有时y>n直接作为解而成立。这样,作为变量值直接处理不等式等而不是处理确定的值,由其它的限制式可解决时尽可能解决。换言之,此时的限制条件提取单元3执行如图9所示的关系的解决方法。可使限制式的解过程具有灵活性,具有与使用过程型编程的现有的程序同样,或其以上的解决能力,使得图9中的限制式的x值被变更时,执行不是代入x的形式的所有的表达式(解决方法1~解决方法3)。
此外,不仅在反函数等的问题上难以表示为限制式的情况,对于通常可以表示为限制式的表达式,只要构成为变形为如图9所示的解决方法的形式来保持,也可以期待提高处理执行时的速度。
这样,根据本实施方式的限制条件解决装置300,由于构成为包含函数定义保持单元9和函数定义执行单元10,所以限制条件和由现有的编程定义的函数等融合,用户侧可以根据对象问题的性质或特长,自由地切换作为限制条件的解决方法以及使用现有的编程方法的解决方法,同时进行设定。由此,包含第一实施方式以及第二实施方式的限制条件解决装置100、200中无法解决的逆运算处理等的限制条件的记述变得格外容易。
(第四实施方式)
除了所述的第一实施方式~第三实施方式的限制条件解决装置100、200、300的各构成单元之外,本实施方式的限制条件解决装置400的特征在于可以适当利用来自数据库或系统资源等的信息来设定变量值。
图10表示本实施方式的限制条件解决装置400的整体结构图。
为了简化本实施方式的说明,通过对第二实施方式的限制条件解决装置200进行附加后的结构的限制条件解决装置400进行说明。在其它的实施方式的限制条件解决装置中,当然可以利用来自数据库或系统资源等的信息。
另外,对本实施方式的限制条件解决装置400的结构和第二实施方式中的限制条件解决装置200共同的构成部分标以同一标号,并省略详细的说明。
如图10所示,根据本实施方式的限制条件解决装置400,限制条件内的变量的一部分或全部可以将记录在所述数据库11或系统资源12内的值、与时刻等其它的情况联合的系统内的变量连接,可以容易地进行实现了本限制条件解决装置400外的变量和限制条件的变量的匹配的变量的管理。
接着,作为限制条件的内容,还表示了几个可以处理复杂的数据结构的变量的例子。以下的具体例子在所述第一实施方式~第四实施方式中的限制条件解决装置100、200、300、400中都可执行。
(对变量定义了多个值的限制条件)
通常,对变量代入值的限制条件例如记述为x=10这样,但定义对变量X代入多个值。具体来说,例如,允许
x={10、11、12};
这样的记述。在该情况下,变量之间的加减乘除运算如果以加法运算为例,则x+y为对各变量x,y的各个元素进行+运算。
(基于定义了运算符的数组结构的变量的限制条件)
现在考虑一维数组vec。将该一维数组vec设为vec={50,200,300},用vec[i]表示对于第i个(0≤i≤字符串长-1)的元素的访问。一维数组vec的各元素为vec[0]=50、vec[1]=200、vec[2]=300。
这里,如下定义对于一维数组vec1、vec2的运算符。
vec1+vec2...将各个一维数组的元素全部相加得到的数组,
vec1-vec2...将各个一维数组的元素全部相减得到的数组,
vec1*vec2...将各个一维数组的元素全部相乘得到的数组,
vec1/vec2...将各个一维数组的元素全部相除得到的数组,
vec1=vec2...各个一维数组的元素全部相同的数组比较或代入,
vec1&vec2...将各个一维数组的元素全部连接得到的数组。
通过这样定义对于一维数组的运算符,可以与所述第一实施方式~第四实施方式中的限制式同样地处理。
对于数组结构的限制条件的访问没有限定,只要准备例如图21所示的运算符即可。该运算符可以使用任意的函数。
此外,为了对于所述一维数组vec的元素实现具有灵活性的访问,在vec[i]中可以进行范围指定。具体来说,在假设vec[n..m,l..k,i..j]表示取出维数组的第n~m个、第l~k个,以及第i~j个元素而排出的数组时,可进行
vec[0..3]=vec2[0..3]&vec2[4..5]+vec3[0..3]这样的运算,可以将一维数组作为限制式(限制条件)来处理。
例如,如果对所述一维数组(这里设为str)的各数组元素存储字符,则str成为字符串。可进行对于字符串str=“Hello World!”、向各str[i]代入任意的字符,或设为字符串1=“Hello”,字符串2=“World!”时,处理由字符串str=字符串1&字符串2所表示的限制式。进而,通过可实现基于仅字符串的正规表现的模型匹配或字符串置换等,可以进一步灵活地记述限制式。
应用该情况,例如,可以如下记述通过输出随着变量值的变更而变化的Web的HTML(hypertext markup language,超链接标记语言)输出。
日期=“2003/01/01”;
姓名=“专利 太郎”;
内容=“长篇文章”;
HTML数据=“<HTML><BODY>”&日期[0..3]&“年”&日期[5..6]&“月”&日期[8..9]&“日”&“姓名:”&姓名&“内容:”&内容&“</BODY></HTML>”;
(具有默认变换规则的限制条件)
准备对于任意的数据变换的变换规则,特别假设可通过默认指定。
特别在从数值变换到字符串的情况下,有对每个参照每次使用变换函数的方法,但通过准备数据变换规则的默认,可进行有效的记述。
作为一例,准备如下的规则。
·变换规则一定为向右对齐
·S表示符号,仅在数为负的时候为一,在除此以外时为空白
·Xn表示n位以下的数
·Yn表示n位固定的数
·Zn表示n位固定的消零
此时,例如在变量定义时,设为
float(”SX9.Y3”)vall;
时,作为带有符号、尾数部9位以下、小数点、小数部3位固定、向右对齐的共14字符的字符串,可以参照vall。
此外,设为unsigned int(”Z8”)val2;
时,val2作为无符号、带有消零8位的共8字符的字符串,可以参照val2。
当然,在值参照时,通过直接记述为val2(”Z10”)等,不仅是默认规则,在应用时也可以应用其它的规则。
通过定义具有这样的默认变换规则的限制条件的变换规则,可以简单地记述事务处理(transaction)应用等中的限制式。
对其它的数据结构也同样可以应用,作为变换规则的格式,以上为一例,当然存在多种格式。
(带有优先顺序的限制条件)
以下表示对限制条件附加权重的情况下的记述例子。
{条件式}[:优先顺序];
or
{条件式}[:优先顺序]→{条件式不成立时的处理};
这里,在多个限制式条件一致的情况下,根据优先顺序的值选择要执行的限制式。此外,在存在多个相同优先顺序的值的情况下,全部执行。通过定义这样的带有优先顺序的限制式,在仅执行优先顺序最小或最大的限制式,或指定限制式的执行顺序的情况下有效。
(结构体的限制条件)
结构体(抽象的数据结构)可以集中处理多个数据类型。如果要用该结构体来表现所述Web输出的数据,则可以表示为
struct结构体名{
date日期;
name姓名;
string内容;
}告示板数据[];。实际的Web系统中,所述结构体的数据存在于数据库或文件上,在所述结构体的情况下,对于与数组序号5有关的“内容”的访问,例如可通过“告示板数据[5].内容”而实现。
另外,在本结构体的数据的访问中,通过定义对于成员(日期、姓名、内容以及HTML数据)的字符串匹配的运算符等,可以将检索的处理作为限制条件来进行记述。
(内建函数或追加运算符、规则追加的限制条件)
进而为了利用所述各种数据结构实现示出了稍微实用的例题的图12(a)以及图12(b),追加几个规则。另外,图12(a)以及图12(b)用一个图表示,但为了方便表示为不同图。
作为内建函数或运算符、规则,例如进行如下准备。
·visize(arg)...求由自变量arg提供的数组的大小的内建函数。
·inttostr(arg)...将整数变换为字符串的内建函数。
·strtrunc(arg1,arg2)...复制arg1的字符串,但在比arg2所指定的字符串长度长的情况下,舍掉该部分的字符。
·数组范围指定运算符[*]...表示所有数组的元素。
·将由{}包围的几个限制式作为块来集中处理。
·[$i]...与目前为止出现的限制式的索引[i]相等,但在仅以块集中的限制条件中都具有相同的值。这里,为了与通常的变量进行识别,记述为$i而不是i。
根据上述,例如,可进行如下的记述。
·output_block[*].output_html...表示将数组内的所有的(参照图12(a))排列而成的多个元素值串,在进行与字符串的比较、代入运算时,作为将所有的元素连接而成的一个字符串来处理,
·vsize(output_block)=list_count...是表示数组数、即数组大小和变量的关系的限制式。但是,由vsize()得到的值的参照为通常的数值,但变更需要表示数组大小的变更,因此在处理系统内部定义为表示将值的变更抽象化而成的用于大小变更的函数调用,或者需要对象的方法(method)调用处理等的抽象化的处理。
为了提供对包含如上的各种数据结构的限制条件的问题的输入数据,用户直接变更相应的变量,或进行调用图12(a)所示的过程型函数的bbs_additem()等的处理。此外,在图12(a)、(b)的例题中,关于输出参照所述output_html。通过以上的处理,可以实现Web服务。另外,不必将输出一定限定为HTML格式,也可以用同样的方法实现任意的客户端/服务器系统中的服务器侧的输入输出服务。
另外,到此为止,表示并说明了一维数组vec,而对二维数组等多维数组的扩展当然可以进行,同样也可以进行数组长度不同的数组之间的运算或与这样的数组和数值的运算有关的定义。
此外,如前所述,作为限制条件的内容还表示了可以处理复杂的数据结构的变量的例子,但不必与这些数据结构完全一致,只要是本领域技术人员可由此类推的变形例也当然包括在内。
如以上所说明的那样,对于限制条件,可以处理各种数据结构而不仅是单纯的数值,所以当前存储的数据和HTML输出的关系可通过限制条件(限制式)来记述,可以仅通过限制条件来简单地记述Web应用中的服务器侧的程序。图11表示与该Web服务器组合进行数据输入、显示的系统的概念图,图12(a)、(b)表示此时的函数类型定义保持单元以及限制条件存储单元中所存储的信息或限制条件的一例。
此外,不限于如前所述的Web中的HTML,通过在如图13所示的一般的窗口界面中构成为将各项目与变量匹配,可以通过限制条件来记述数据和用户界面的关系,容易记述一般的用户界面,并且容易理解。由此,与现有的编程方式相比较,可以实现高的生产性。
<本发明的另一应用例:应用程序构建、事务处理>
接着,说明可对使用WEB上的输入界面来构建任意的应用程序的问题,或检索存储了任意的数据的数据库时的事务处理问题应用本发明的情况。
在所述第一实施方式~第四实施方式中的限制条件解决装置中,通过作为历史信息(更新历史)具有通过限制条件解决的处理步骤以及处理内容,可以实现应用上的用户界面的概念之一的UNDO功能,或数据库的事务处理。
通过可以实现该UNDO功能或数据库的事务处理,可以容易地进行如下的工作:使得从数据的更新开始求伴随数据变更的限制解的一系列的动作不被进行。由此,可以可靠且迅速地进行将限制条件的数据值变更一部分而发现输入数据中包含的错误的输入数据的确认、或其取消时的用于恢复到原来的数据值的处理。
接着,表示可对使用了作为GUI环境中的基本画面构成元素的窗口的窗口系统或多窗口系统应用本发明的情况。这里,以如图14所示的窗口系统为一例进行说明。另外,在图14中示出了三个窗口,但当然可以处理任意个窗口。
图15是概念性地表示实现窗口系统的客户端/服务器系统中的客户端侧的结构的图。关于服务器侧的系统结构与图1、3、8、10所示的结构同样,所以省略。
如图15所示,GUI客户端具有GUI处理部和GUI控制部,GUI控制部控制如图16所示的各部分的动作。
这里的GUI控制部的内容具有与图1、3、8、10同样的结构,对对于客户端内的图1、3、8、10的输入输出I/F的I/F控制部进行各部分的状态变更。作为限制条件,各部分间的联合规则、应由客户端处理的输入数据的匹配性检查、输入辅助、应向服务器侧传递的数据的加工规则等被记述、处理。
由GUI控制部加工并处理后的数据经由传递用变量被传递到服务器。
当然,可以集中以一台处理客户端的GUI处理部分和服务器的限制处理系统等,可以灵活地变形而使用系统结构。
另外,除了作为客户端/服务器系统的整体具有作为本发明的特征的与变量的值变更对应的限制条件逐次解法的功能之外,在所述GUI控制部中也具有。此外,客户端/服务器间的数据传送也可以是独立形式,但是也可以通过使用XML等,使用标准化后的数据形式来实现与现有方法具有互换性的开放的协议。
这样,在GUI侧,可以基于限制条件的记述来进行GUI的动作控制、传递的数据的匹配性的确认、输入辅助、与数据的状态对应的GUI的状态变更、以及对服务器侧的通知处理等。
接着,详细说明窗口的动作。各窗口内的构建可通过能够实现许可所述各种数据结构的处理的限制条件的设定或UNDO功能或数据库的事务处理的用户界面来实现,该窗口本身的动作如下地记述。
作为窗口的信息,例如定义以下的结构体。
struct{
位置x,y;
大小x,y;
显示中标志;
}窗口信息[];
另外,设为窗口信息[0]...表示应用1,
设为窗口信息[1]...表示应用2,
设为窗口信息[2]...表示应用3。
这些变量值的参照更新为与图10的系统资源12同样的处理,假设与实际的GUI系统的窗口联动。
下面表示要用限制条件记述显示在执行应用的画面上的窗口的动作(显示/不显示、移动、大小变更)的情况的一例。
(a)窗口n的显示/不显示
在画面上打开窗口(显示)...窗口信息[n].显示中标志=true,
在画面上关闭窗口(不显示)...窗口信息[n].显示中标志=false,
此外,在画面上有用于关闭窗口的‘close按钮’时,例如设为窗口信息[n].显示中标志=!close按钮的状态(!是“非”运算符)即可。
(b)窗口n的移动
窗口信息[n].位置.x=要移动的x大小;
窗口信息[n].位置.y=要移动的y大小;
(c)窗口的大小变更
窗口信息[n].大小.x=要变更的x大小;
窗口信息[n].大小.y=要变更的y大小;
此外,为了使应用2与应用1的右边邻接,设为
窗口信息[1].位置.x=窗口信息[0].位置.x+窗口信息[n].大小.x;
窗口信息[1].位置.y=窗口信息[0].位置.y;即可。
此外,为了固定窗口的大小,对变量准备可以/不可以变更的属性的基础上,将窗口信息[n].大小.x、窗口信息[n].大小.y设为不可变更即可。
这样,在GUI环境中的窗口系统或多窗口系统中,相对于现有的编程方法中,发生事件时,对窗口的动作以及窗口内的应用动作,必需逐一记述依赖于该事件状况的关联动作,根据本发明的动作控制,可以基于简单明了的限制条件,简洁且容易地记述应用的复杂的动作。
另外,在GUI环境中前述了可通过限制条件的记述来控制窗口系统中的动作的情况,但不仅用于对画面上输出数据的情况,对于使用窗口将处理过的内容输出到任意的介质(例如,纸)上的输出系统(例如,帐票印刷系统)时,也可以应用本发明,这一点只要是本发明的技术领域中的本领域技术人员就当然可以容易地想到。
此外,在所述说明中,示出了客户端/服务器系统中的具体例,但不必一定是客户端/服务器系统,也可以构成为将客户端和服务器分别构建为不同的系统,仅能在客户端或服务器中进行所述处理。
<本发明的其它的应用例子:构建为并行化处理的计算机系统>
此外,本发明可以应用于作为在过程型编程中麻烦的问题的并行化处理的问题。在并行处理中,大致分为考虑两种动作。即,有几个CPU执行步骤S23~步骤S30的算法的方法,和如数据流装置这样用结构体(architecture)来构建变量和关系式的方法。
在前者的情况下,如果要用通常的过程型编程方法进行并行处理,则在构建算法的阶段,用户不得不一边意识到CPU的并行动作,一边分割编程的处理步骤来进行记述。相对于此,在使用本发明的并行化处理的情况下,仅通过使从图2的算法中的步骤S22的变量值的变更开始的步骤S23~步骤S30的处理并行动作,用于可以实现并行处理而不会直接意识到并行处理。
具体来说,所述第一实施方式~第四实施方式中的限制条件解决装置中,在对于某一处理的步骤S23~步骤S30的执行中,也进行执行关于其它的处理的步骤S22的变量值的变更的一系列的动作。
实际上,与现有的过程型编程方法中的并行算法的安装同样,在该并行处理的执行中,需要在各变量间实现排他控制或同步控制,但可以直接应用现有的过程型编程中的方法。
在后者的用结构体来构建变量和关系式的情况下,变量间的关系式例如为在并行计算机上物理地实现时的通信路径。在该并行计算机上,并行处理器通过复杂的通信路径连接,通信成本根据路径而不同。通过用优先级来表示该通信成本,可以自动地选择数据路径。关于优先顺序,可以使用作为限制条件的一例举出的(带有优先顺序的限制条件)。通过与这样的并行处理同样的方法,可以对一般构建的系统整体应用本发明。
另外,这里所说的系统表示多个特性不同的计算机或分用途专用机以及由将它们连接的网络构成的复合物,是指所有的一般的企业系统或社会系统。
换言之,在对系统整体应用本发明的情况下,概念上与所述数据流装置中的并行处理方法非常相似,通过本发明构建的计算机经由成为计算机间的界面的变量与作为其它的计算机的界面的变量连接。变量间的关系式是通信路径,通信成本为优先级,从而,通过本发明,可以设计并构建所述系统整体。
<本发明的另一应用例:与现有编程语言的融合>
如至此说明的那样,本发明处理以来自外部(用户等)的指示(事件)为契机变更变量的值而通过限制传播来解决由任意的限制条件构筑的问题的事件驱动型的计算执行原理。如前所述,从在函数定义保持单元或函数定义执行单元中利用现有的过程型编程语言等可知,图18中也示出,以可与现有的编程语言的组合为前提。因此,进一步详细叙述可将本发明融合到现有编程语言的情况。
另外,这里为了进行说明,在将编程语言分类的情况下,大致分为一个是过程型编程,另一个是声明式编程,但实际上存在更细致的编程语言的分类。即,相对于声明式编程语言的非声明式编程语言中包含过程型编程语言和作为数组的编程语言的函数型编程语言。以下,处理本发明和函数型编程语言的融合。
(A)与函数型编程语言的融合
这里,叙述与作为函数型编程语言最有历史并可以称作代表的LISP语言(Common LISP)的自然的融合方法。现在,作为两个变量a、b的初始值以及限制条件,定义
a={11,12,13}
b={1,2,3}
a[$i]=b[$i]+10。
a、b的值都是具有三个元素的数组。此外,在本发明的实施例中,新定义对限制式进行定义的函数defconstraint,使对变量的代入与对符号的绑定对应时,在LISP语言中大致可以如下记述。
(set’a#(11 12 13))
(set’a#(123))
(defconstraint’(=(arefa $i)(+(arefb $i)10))...(式18)
这里,函数defconstraint为了实现图9的数据结构而根据自变量建立与符号(变量)a和b有关的解决式,执行
(defconstraint2’(=(arefa $i)(+(arefb $i)10))
’(setf(arefa $i)(+(arefb $i)10))
’(setf(arefb $i)(-(arefa $i)10))),
函数defconstraint2维持图9的数据结构。作为式的数据结构,可以是图6等的数据结构,但由于在LISP中仅通过LISP本身的功能而可以自然地记述结构,所以在这里活用该LISP的特征来记述如上述的表达式。
对于C语言的指针等也涉及到同样的问题,在LISP语言中,存在各数据被共享的可能性,变量和数据的关系不一定为一对一。因此,一般在变更某一数据时,其是否与特定的符号有关系与对变量代入值时是无关的。从而,这样的变量和数据的关系结构在实现本发明的限制消除时成为问题,下面对其进行说明。
现在,图22中示出将加上指示与符号b相同的数据的符号c,以符号a、b、c为中心的通常的LISP语言的内部数据结构极简化后的一例。在LISP语言中,所有的符号被记录在分组中,由于按姓名空间保存,所以这里根据分组来记述。此外,由于标准的姓名空间名是‘user’,因此符号a、b、c被登记在‘user’中,但在本例中,符号b也被登记在其它的分组中。
在LISP语言中执行b[1]=12的情况下,执行
(setf(arefb1)12),
但执行值的代入的函数setf需要与由上述函数defconstraint2定义的限制式匹配。另一方面,被递交给函数setf的数据在通常的LISP中为图22中的(*)所表示的指针,不存在应匹配的信息。因此,在这样的简单的例子的情况下,考虑了不仅在函数评价时传递评价结果,而且到函数setf的执行时为止,传递所评价的表达式的信息的方法。但是,由于实际上为非常复杂的表达式,因此难以应对传递的数据庞大的情况、由(setf(arefc1)12)变更了b[1]的情况。
为了解决该情况,将LISP语言的基本数据结构构成为向双向追溯即可。作为一例在图中表示该数据结构时,如图23所示。图23中的(*)所表示的函数aref的数组参照不仅具有数组内的指针而且具有数组本身的信息,以便向反向追溯。包含数组信息的所有的数据保存各种信息,以便追随被赋值的符号的信息。
此外,实际上不仅仅追溯到符号而且必须追溯到已登记的分组信息,从而,限制式的符号需要考虑分组。在图23中以粗线的箭头表示从(*)追溯b[1](包含分组,user:b[1])时的路径。
另外,Common LISP的符号中原本具有主分组(home packge)的信息,但有时一个符号被保存在多个分组中。因此,需要追加可以追随已登记的所有的分组的新的数据结构,这样,在setf的执行时,可以检查限制式的匹配。如以上所说明的那样,可以将本发明与以LISP语言为代表的函数型编程语言完全融合而自然地处理。
通过与所述(A)的函数型编程语言的融合,可以在LISP语言中应用本发明,作为对函数型编程语言上的安装是理想的,但例如在每次执行setf等的代入操作时需要限制式的匹配,因此在原理上执行效率恶化。特别在代入时的与反向的限制式的匹配(反向的匹配)时,如果不追溯到相当靠上的一方,则不知道是否存在相应的限制式的定义。例如,在指针的时刻知道的仅是[1]等的索引信息,但由于连简单的限制式也构成a[x]、b[x]这样的结构,因此仅通过索引信息可以判断是否存在应匹配的限制条件的情况仅为已限定的特殊条件时。
相对于此,在从符号名(变量名)追溯的匹配的情况下,在多数的情况下,最初起知道是否存在限制条件,通过对变量(符号)本身附加这些信息而可以实现处理的高速化。
此外,实际的限制式出现a[x]等简单的例子的情况较少,与反向的匹配通常需要对相当复杂的表达式追溯到相当靠上的一方,可能要完全追溯。考虑将其安装到实际的Common LISP的复杂的分组机构上的情况时,安装实际变得复杂,对于执行时间,即使考虑通过各种方法可以期待一些的改善的做法,与从变量开始的限制式的匹配相比,执行效率明显地恶化到不现实。
因此,作为现实的解决方法,在放弃完全的融合,使用限制条件的情况下,准备专用的表达式处理机构,如果在其中加入一定仅能从变量(符号)来参照值的限制,则可以防止上述问题。例如,如将字符串数据用‘”’括起来表示这样,将式数据抽象化为数据类型之一,例如用‘?’括起来表现,定义执行专用的表达式处理机构的函数peval,在函数peval内执行代入式时,所述式(18)可以记述为
(peval’?a={11,12,13}?)
(peval’?b={1,2,3}?)
(defconstraint’?a[$i]=b[$i]+10?)。
然后,在执行b[1]=12的情况下,执行(peval’?b[1]=12)?)即可。
在该情况下,由于在式处理中一定仅能够进行从变量(记号)开始的参照,因此不需要反向的匹配,所以不发生所述(A)所叙述的LISP语言上的安装的问题,进而对LISP语言的其它功能完全没有影响,因此解决了执行效率的问题。
但是,作为编程语言,当然是不自然的。因此,只要准备新定义编程语言的语法本身而在代入操作时进行解释,以便自然地使用专用的表达式处理机构的分析程序(句型分析器)即可。这由于在输入时对语法进行句型分析而置换为作为LISP的内部表现,所以与本来的LISP语言不同,但可以实现具有将LISP语言的优点与本方式组合的执行效率不显著地降低的能力的编程语言。
另外,这里,叙述通过示出以式评价通常在peval函数中进行为基本的、具有最主要的C语言习惯的语法的编程语言的基本元素,自然地使用peval函数的方法。观察变换后可知,虽然具有C语言习惯的语法、可以进行与C语言同样的记述,但本质上是LISP,具有LISP的灵活的记述能力的优越性。进而,也可以与纯粹的LISP程序完全混合地执行。
包含可称作本系统的基本单位的函数的表达式的解释执行如下地进行解译。另外,这里关于类型声明,本质上没有关系,因此省略。输入:
a[1]=func1(100);执行函数:
(peval’?a[1]=func1(100)?)
具有作为C语言的基本结构的局部变量的块结构如下地解释。输入:
{ int x,y; x=10; y=20; } 执行函数: (let(x y) (peval’?x=10?) <!-- SIPO <DP n="33"> --> <dp n="d33"/> (peval’?y=10?))
包含全部C语言的大致的基本元素的、具有局部变量和循环结构的函数如下地解释。输入:
int f(int v) { int i,n=v; for(i=0;i<10;i++) n++; return n; } 执行函数: (defun f(v) (let(i,n) (peval’?n=v?) (prog() (peval’?i=0?) loop (if(not(peval’?i<10?)) (return nil)) (peval’?n++?) (peval’?i++?) (go loop) (return-from f n)))
式的解释和执行方法考虑各种,这些变换方法仅为一例,但请注意关于变换方法可应用已经确立的各种编译技术。这样,可以设计自然地用函数peval置换执行与限制式有关的表达式执行的、将本发明和LISP的特征组合的非常强的编程语言。使用该语言,用与函数型语言融合后的强的编程语言记述图12(a)、(b),从而本发明的图3、图8、图10所示的限制条件解决装置可以一边网罗现存的过程型、函数型编程的功能,一边不降低实际的执行效率地执行。此时,图21所示的运算符可由函数PEVAL内的表达式处理实现。
<本发明的另一应用例:与设计方法的组合>
此外,本发明可与设计方法组合应用。开发设计方法实际存在各种方法,但不管何种方法,其共同的概念为首先分析要实现的要求,接着决定为了实现要求而开发的目标的规范,然后开发满足该规范的程序。但是,在现有的过程型的编程方法的情况下,不论何种开发方法,最终都不得不将CPU的动作记述为程序代码。另一方面,声明式编程方法隐藏了解决该问题的可能性,但如开头所述,计算机的执行效率不好的问题严重。因此,虽说是当前的一般的编程作业,但多是指过程型编程方法。
而且,作为系统设计方法之一,具有数据中心指向。数据中心指向作为可以很好地设计业务系统的方法而已知,即使由此进行了实现要求的系统设计,最终也需要编码作业,作为程序代码不得不记述CPU的动作。关于CPU的动作的记述,即使在软件学发达的当今,在本质上也依赖于程序员的经验和感觉,现状为人的创造性作业的领域内存在的开发设计作业还很繁重。作为减轻开发设计作业的工具有CASE工具等。但是,它们即使可以减轻开发作业,但关于无需由人来记述CPU的动作的工作的本质性的问题仍然无法解决。
因此,在现有的方法中,对于所述本质性问题的解决不是无视而是将重点置于再利用程序代码上。例如,软件的程序库化或面向对象程序语言将该再利用作为目的而进行概念化来产生的。
相对于此,本发明尽管需要考虑计算机的动作,但完全不需要考虑如现有的复杂的动作。也就是说,程序员从直接记述作为各种设计方法中共同的问题的CPU的动作的作业中解放出来,不需要编码时的创造性的工作。从而,根据本发明,作为CASE工具或与CASE工具类似的工具以及其它工具的发展形式,可以根据规范自动生成程序代码,可以自动实现编程。
如果通过本发明设计开发系统整体而不是计算机单体,则也可以自动生成扩大的系统整体。在该情况下,使用非常多的变量和关系式,但与现有的设计方法同样,可以实现自上而下(top down)式设计方法或自下而上(bottom up)式设计方法,进而当然也可以进行基于功能的区域分割,或再利用分割后的区域。此外,当然对于任何的开发设计方法都可以共同地应用本发明。
<本发明的另一应用例:对图形数据或机器人的应用>
作为本发明的又一应用例,说明对计算机图形的模型或机器人的关节等的可动部的应用。这里,省略如机器人控制的精度的与本发明没有直接关系的复杂的问题,仅说明所连接的关节的处理。
现在,假设被连接的点a、e之间有四个关节A、B、C、D,如果将关节AB间的位置设为b,将关节BC间的位置设为c,关节CD间的位置设为d,则a~e间的关系可以由这5个点来表现。在各点由具有(x,y,z)的三个坐标的矢量表示的三维的情况下,各关节的旋转运动以3×3的旋转矩阵表示。另外,也可以对该旋转矩阵再加入并行移动成分而设为4×4矩阵。
为了将本问题简化,用限制式表示省略了各点间的长度等的仅为单纯的旋转时,成为
b=a*A ...(a)
c=b*B ...(b)
d=c*C ...(c)
e=d*D ...(d)。
这里,A、B、C、D表示对应的关节的旋转矩阵。
通常,由于关节的移动范围有限制,因此各旋转矩阵A~D的值也有限制,用户用限制式来记述该限制。如果,在a被固定而关节B变化的情况下,需要执行所述(b)→(c)→(d)顺序的限制传播。此外,如果在相对于被固定的a存在想要移动的位置e的情况下,通过该限制传播,仅校正各旋转矩阵D、C、B、A的必要的旋转成分而自动地决定。这里,通过追加表示被固定为限制条件的变量,或者使系统的变量或关系式作为属性具有等来实现a被固定的情况。因此,将旋转矩阵A~D设为分别控制关节的电机等的角度时,这可以应用于机器人控制。此外,如果对三维坐标a~e进行透视变换而绘制到显示设备等,则这与应用到计算机图形的情况完全相同。
在对这样的机器人的关节等的可动部应用本发明的情况下,在现实中更复杂,但既便如此,与基于过程型编程方法的实现相比,可以用格外简单且自然的形式来实现。另外,对计算机的关节等的可动部的应用例子仅为一例,当然可以很好地解决与关节类似的任意的问题。
<本发明的另一应用例:对化学领域、物理领域、仿真领域的应用>
此外,作为本发明的又一应用例,说明对化学领域的应用。
在处理化学式时考虑各种模型化,但这里为了说明而进行简化,仅说明与本发明直接关联的内容。
为了将化学式中的各元素作为对象来处理,按元素的种类定义为类,根据需要将要使用的元素实例化。各元素对象作为限制条件具有与其它元素的结合条件或元素的性质。此外,元素的组合由化合物对象管理,通过将元素对象登记到化合物对象来表示。在化合物对象内,利用限制式具有组合时的性质或组合条件。通过这样构成,用户可以自由地变更对象的组合,但另一方面,通过限制条件禁止不可能的组合,然后在元素的变更成功时,据此可知化合物的性质也被变更。此外,在此时,例如,如果在元素对象内具有电子的状态作为变量(属性),则发生与电子变量有关的限制传播,可以表示作为物理现象的电子的行为。
如以上所说明的那样,本发明可以高效率地表示化学现象或物理现象等,这是某一状况的模型化和对于情况的发生的现象的仿真,对于变量值的变更的限制消除及其本身成为特定的现象本身。另外,不限于化学现象或物理现象,在多个仿真领域当然都可以有效地使用本方式。
<本发明的另一应用例:对线性规划法(简化法等)的应用>
此外,根据此前的说明,本发明典型地在简化法等线性规划法、整数规划法、传送问题等中所记载的限制条件中,如果是用户可以输入考虑了与对象问题有关的限制传播的处理步骤的限制条件的情况则可以应用,这一点只要是本领域技术人员就应该明白。
<本发明的另一应用例:对神经网络的应用>
神经网络中的神经元模型可以将阈值作为变量、由限制式来记述。以该观点来看,神经网络的神经元模型的结合是由本方式处理的限制式关系的特殊形式,可以视作子集。
在神经网络中,将为了得到要求的结果而决定网络内的各神经元模型的阈值称作学习,而在该学习中,课题是如何设定用于得到希望的结果的阈值。而且,若说该学习方法,其概念上接近相对于本方式的现有的限制编程。但是,神经元模型的阈值的设定是设定变量的值的作业,不能视为通过在本发明中叙述的方式进行的编程。从而,可以将本发明应用到神经网络。即,根据本发明,不仅自动调整值,也可以实现考虑动作而设定一部分或全部的阈值的学习方法。
另外,所述内容仅为用于说明本发明的技术思想的一例,不限于此,在实现本发明的技术思想时,即使具有本发明的技术领域中的通常知识的人追加、变更限制条件解决装置的各结构或限制条件的定义方法,本发明的根本的技术思想也不变,这是显然的。
此外,本发明的目的当然也可以通过下述方式来达成:将存储了实现所述实施方式的限制条件解决装置100、200、300、400的功能的软件的程序代码的存储介质提供给系统或装置,该系统或装置的计算机(或CPU或MPU)读出存储在存储介质中的程序代码并执行。
该情况下,从存储介质读出的程序代码本身实现本实施方式的功能,存储了该程序代码的存储介质以及该程序代码构成本发明。作为用于供给程序代码的存储介质,可以使用ROM、软盘、硬盘、光盘、光磁盘、CD-ROM、CD-R、磁带、非易失性存储卡等。
此外,通过计算机执行读出的程序代码,不仅可以实现上述实施方式的功能,而且基于该程序代码的指示,在计算机上运转的操作系统等进行实际处理的一部分或全部,通过该处理实现本实施方式的功能的情况当然也包含在内。
Claims (15)
1.一种限制条件解决方法,其特征在于,
包括:
限制条件输入处理,由用户输入考虑了与对象问题有关的限制传播的处理步骤的限制条件;
变量值设定处理,设定通过所述限制条件输入处理输入的限制条件所使用的变量的初始值或变动值;
限制条件提取处理,从通过所述限制条件输入处理输入的限制条件中提取与通过所述变量值设定处理设定的值有关的限制条件;
限制条件解计算处理,基于由所述用户考虑到的限制传播的处理步骤,对通过所述限制条件提取处理提取出的所有限制条件代入所述变量的初始值或变动值,计算该限制条件的解;以及
变量值再设定处理,将通过所述限制条件解计算处理计算出的解设定为所述变量值设定处理中的新的变动值,其中,
所述变量值再设定处理中存在再设定的新的变动值的期间,反复进行所述限制条件提取处理以及所述限制条件解计算处理。
2.如权利要求1所述的限制条件解决方法,其特征在于,
还包括:
限制条件存储处理,存储通过所述限制条件输入处理输入的限制条件;以及
变量值存储处理,存储通过所述变量值设定处理输入的变量的值,其中,
由所述用户进行所述限制条件或所述变量值的追加、变更、删除时,所述限制条件提取处理与通过所述限制条件存储处理或所述变量值存储处理存储的限制条件或变量值进行比较,仅提取产生了不同的限制条件。
3.如权利要求1或2所述的限制条件解决方法,其特征在于,还包括:
函数类型定义保持处理,可以设定过程型或函数型的算法;以及
函数类型定义执行处理,可以基于通过所述函数类型定义保持处理设定的算法,按照过程型或函数型来解决所述对象问题。
4.如权利要求1~3中的任何一项所述的限制条件解决方法,其特征在于,通过所述变量值设定处理以及所述变量值再设定处理设定的变量不仅包括数值,而且包括下述的至少任何一种:字符、字符串、抽象的数据结构、包含内建函数的数据、以及对象型数据结构。
5.如权利要求1~4中的任何一项所述的限制条件解决方法,其特征在于,
所述对象问题是使用WEB上的输入界面来构建任意的应用程序的问题、或检索存储了任意的数据的数据库时的事务处理问题,
该方法包括历史保持处理,将通过所述限制条件解决所述对象问题的处理步骤以及处理内容作为历史信息保持。
6.如权利要求5所述的限制条件解决方法,其特征在于,在使用了作为GUI环境中的基本画面构成元素的窗口的窗口系统或多窗口系统、或者使用所述GUI环境中的窗口输出处理过的内容的输出系统中,进行所述应用程序的构建处理。
7.一种限制条件解决方法,包括:
限制条件输入处理,输入限制条件;
变量值设定处理,设定通过所述限制条件输入处理输入的限制条件所使用的变量的值;
限制条件提取处理,从通过所述限制条件输入处理输入的限制条件中提取与通过所述变量值设定处理设定的值有关的限制条件;以及
限制条件解计算处理,计算通过所述限制条件提取处理提取出的限制条件的解,其特征在于,
所述限制条件至少由下述情况中的任何一种构成:包含当前的数组元素数、使所述变量持有多个值、包含基于结构体数组的元素值的检索、以及基于默认规则的字符串数值变换。
8.一种限制条件解决装置,其特征在于,
包括:
限制条件输入单元,其由用户输入考虑了与对象问题有关的限制传播的处理步骤的限制条件;
变量值设定单元,其设定由所述限制条件输入单元输入的限制条件所使用的变量的初始值或变动值;
限制条件提取单元,其从由所述限制条件输入单元输入的限制条件中提取与由所述变量值设定单元设定的值有关的限制条件;
限制条件解计算单元,其基于由所述用户考虑到的限制传播的处理步骤,对由所述限制条件提取单元提取出的所有限制条件代入所述变量的初始值或变动值,计算该限制条件的解;以及
变量值再设定单元,其将由所述限制条件解计算单元计算出的解设定为所述变量值设定单元中的新的变动值,其中,
所述变量值再设定单元产生再设定的新的变动值的期间,由所述限制条件提取单元以及所述限制条件解计算单元反复进行。
9.如权利要求8所述的限制条件解决装置,其特征在于,
还包括:
限制条件存储单元,其存储由所述限制条件输入单元输入的限制条件;以及
变量值存储单元,其存储由所述变量值设定单元输入的变量的值,其中,
由所述用户进行所述限制条件或所述变量值的追加、变更、删除时,所述限制条件提取单元与由所述限制条件存储单元或所述变量值存储单元存储的限制条件或变量值进行比较,仅提取产生了不同的限制条件。
10.如权利要求8或9所述的限制条件解决装置,其特征在于,还包括:
函数类型定义保持单元,其可以设定过程型或函数型的算法;以及
函数类型定义执行单元,其基于由所述函数类型定义保持单元设定的算法,按照过程型或函数型来解决所述对象问题。
11.如权利要求8~10中的任何一项所述的限制条件解决装置,其特征在于,由所述变量值设定单元以及所述变量值再设定单元设定的变量不仅包括数值,而且包括下述的至少任何一种:字符、字符串、抽象的数据结构、包含内建函数的数据、以及对象型数据结构。
12.如权利要求8~11中的任何一项所述的限制条件解决装置,其特征在于,
所述对象问题是使用WEB上的输入界面来构建任意的应用程序的问题、或检索存储了任意的数据的数据库时的事务处理问题,
该装置包括历史保持单元,其将通过所述限制条件解决所述对象问题的处理步骤以及处理内容作为历史信息保持。
13.如权利要求12所述的限制条件解决装置,其特征在于,在使用了作为GUI环境中的基本画面构成元素的窗口的窗口系统或多窗口系统、或者使用所述GUI环境中的窗口输出处理过的内容的输出系统中,进行所述应用程序的构建处理。
14.一种限制条件解决装置,包括:
限制条件输入单元,其输入限制条件;
变量值设定单元,其设定由所述限制条件输入单元输入的限制条件所使用的变量的值;
限制条件提取单元,其从由所述限制条件输入单元输入的限制条件中提取与由所述变量值设定单元设定的值有关的限制条件;以及
限制条件解计算单元,其计算由所述限制条件提取单元提取出的限制条件的解,其特征在于,
所述限制条件至少由下述情况中的任何一种构成:包含当前的数组元素数、使所述变量持有多个值、包含基于结构体数组的元素值的检索、以及基于默认规则的字符串数值变换。
15.一种限制条件解决系统,可互相通信地连接了多个设备,其特征在于,
上述设备中至少一个设备具有权利要求8~14中的任何一项所述的限制条件解决装置的功能。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004013629 | 2004-01-21 | ||
JP013629/2004 | 2004-01-21 | ||
PCT/JP2005/000752 WO2005071609A1 (ja) | 2004-01-21 | 2005-01-21 | 制約条件解決方法、制約条件解決装置、及び制約条件解決システム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1910601A true CN1910601A (zh) | 2007-02-07 |
CN1910601B CN1910601B (zh) | 2010-05-05 |
Family
ID=34805390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800029969A Expired - Fee Related CN1910601B (zh) | 2004-01-21 | 2005-01-21 | 限制条件解决方法、限制条件解决装置、以及限制条件解决系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7499764B2 (zh) |
EP (1) | EP1710736A4 (zh) |
JP (1) | JP4669788B2 (zh) |
KR (1) | KR100916745B1 (zh) |
CN (1) | CN1910601B (zh) |
CA (1) | CA2554580C (zh) |
WO (1) | WO2005071609A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831138A (zh) * | 2011-06-14 | 2012-12-19 | 株式会社东芝 | 分散数据库检索装置及分散数据库检索方法 |
CN107450384A (zh) * | 2016-03-29 | 2017-12-08 | 伊利诺斯工具制品有限公司 | 迫近热关断警报系统和热关断方法 |
CN109011580A (zh) * | 2018-06-29 | 2018-12-18 | 腾讯科技(深圳)有限公司 | 残局牌面获取方法、装置、计算机设备及存储介质 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8700438B1 (en) * | 2005-04-28 | 2014-04-15 | Southwest Airlines Co. | Constraint-based schedule generation for transportation resources |
US7606776B1 (en) * | 2005-09-28 | 2009-10-20 | Actenum Corporation | Flexible constraint propagation engine for combinatorial optimization applications |
JP2008226096A (ja) * | 2007-03-15 | 2008-09-25 | Hitachi Ltd | 制約伝播装置、制約伝播方法、およびプログラム |
US20090089739A1 (en) * | 2007-09-28 | 2009-04-02 | Microsoft Corporation | Intelligent editing of relational models |
US8082140B2 (en) * | 2008-04-16 | 2011-12-20 | GM Global Technology Operations LLC | Parametric analysis of real time response guarantees on interacting software components |
US8620635B2 (en) * | 2008-06-27 | 2013-12-31 | Microsoft Corporation | Composition of analytics models |
US8411085B2 (en) * | 2008-06-27 | 2013-04-02 | Microsoft Corporation | Constructing view compositions for domain-specific environments |
US8493406B2 (en) * | 2009-06-19 | 2013-07-23 | Microsoft Corporation | Creating new charts and data visualizations |
US20100325564A1 (en) * | 2009-06-19 | 2010-12-23 | Microsoft Corporation | Charts in virtual environments |
US8866818B2 (en) | 2009-06-19 | 2014-10-21 | Microsoft Corporation | Composing shapes and data series in geometries |
US8692826B2 (en) * | 2009-06-19 | 2014-04-08 | Brian C. Beckman | Solver-based visualization framework |
US9330503B2 (en) | 2009-06-19 | 2016-05-03 | Microsoft Technology Licensing, Llc | Presaging and surfacing interactivity within data visualizations |
US8788574B2 (en) * | 2009-06-19 | 2014-07-22 | Microsoft Corporation | Data-driven visualization of pseudo-infinite scenes |
US8531451B2 (en) * | 2009-06-19 | 2013-09-10 | Microsoft Corporation | Data-driven visualization transformation |
US8352397B2 (en) * | 2009-09-10 | 2013-01-08 | Microsoft Corporation | Dependency graph in data-driven model |
US8700592B2 (en) | 2010-04-09 | 2014-04-15 | Microsoft Corporation | Shopping search engines |
US9785987B2 (en) | 2010-04-22 | 2017-10-10 | Microsoft Technology Licensing, Llc | User interface for information presentation system |
US9043296B2 (en) | 2010-07-30 | 2015-05-26 | Microsoft Technology Licensing, Llc | System of providing suggestions based on accessible and contextual information |
US9128733B2 (en) * | 2010-11-12 | 2015-09-08 | Microsoft Technology Licensing, Llc | Display and resolution of incompatible layout constraints |
US20120198375A1 (en) * | 2011-01-27 | 2012-08-02 | Carter Stephen R | Multi-condition resource planning |
FI124278B (fi) | 2012-03-23 | 2014-05-30 | Juno Medical Llc | Mittalaite ja menetelmä rasitustilan indikoimiseksi |
JP5936135B2 (ja) | 2013-03-22 | 2016-06-15 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 情報処理装置、情報処理方法、及び、プログラム |
US20150160838A1 (en) * | 2013-12-06 | 2015-06-11 | Takeshi SHIRABE | Method and apparatus for automatic graphic editing with map-dependent constraints |
CN114217888A (zh) * | 2016-05-17 | 2022-03-22 | 谷歌有限责任公司 | 用于用户界面元素的有效布局和控制的基于约束的布局系统 |
US10169292B2 (en) | 2017-04-30 | 2019-01-01 | International Business Machines Corporation | String variables reprsentation in solvers |
US11184374B2 (en) | 2018-10-12 | 2021-11-23 | International Business Machines Corporation | Endpoint inter-process activity extraction and pattern matching |
US10956566B2 (en) | 2018-10-12 | 2021-03-23 | International Business Machines Corporation | Multi-point causality tracking in cyber incident reasoning |
US11941054B2 (en) | 2018-10-12 | 2024-03-26 | International Business Machines Corporation | Iterative constraint solving in abstract graph matching for cyber incident reasoning |
JP6841305B2 (ja) * | 2019-07-04 | 2021-03-10 | ダイキン工業株式会社 | 組合せ解決定システム |
CN113110058B (zh) * | 2021-01-25 | 2022-06-17 | 华东交通大学 | 一种通信受限的多智能体系统二分实用一致性控制方法 |
CN118103856A (zh) * | 2021-11-16 | 2024-05-28 | 株式会社野村综合研究所 | 配送计划辅助系统、配送计划辅助方法以及计算机程序 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3873816A (en) * | 1968-12-27 | 1975-03-25 | Agency Ind Science Techn | Automatic adaptive controller |
US3878982A (en) * | 1973-11-16 | 1975-04-22 | Industrial Nucleonics Corp | Automatic target management method and system |
CA2031765C (en) * | 1989-12-08 | 1996-02-20 | Masahide Nomura | Method and system for performing control conforming with characteristics of controlled system |
JPH0561675A (ja) * | 1991-08-30 | 1993-03-12 | Agency Of Ind Science & Technol | 推論方法 |
JP3014840B2 (ja) * | 1991-12-11 | 2000-02-28 | 株式会社日立製作所 | 制約条件緩和方式及びこれを有する設計支援装置 |
JPH07175844A (ja) * | 1993-12-16 | 1995-07-14 | Chugoku Nippon Denki Software Kk | 知的設計システム |
JP3557717B2 (ja) * | 1995-05-18 | 2004-08-25 | 株式会社日立製作所 | 設計支援方法およびその装置 |
JPH0981387A (ja) * | 1995-09-18 | 1997-03-28 | Nec Corp | 制約処理方式 |
US6047219A (en) * | 1997-11-24 | 2000-04-04 | Hewlett-Packard Company | Specification interpreting distributed system |
JP3551882B2 (ja) * | 2000-02-28 | 2004-08-11 | 日本電気株式会社 | 対話画面ソースコード生成機能を有する情報処理装置、および、記録媒体 |
JP2002196927A (ja) * | 2000-10-18 | 2002-07-12 | Isac Inc | 制約処理システム及びプログラム |
US6865562B2 (en) * | 2001-06-04 | 2005-03-08 | Xerox Corporation | Adaptive constraint problem solving method and system |
JP2003149326A (ja) * | 2001-11-15 | 2003-05-21 | Hitachi Ltd | マルチスタティックセンサ運用支援装置 |
-
2005
- 2005-01-21 EP EP05703973A patent/EP1710736A4/en not_active Withdrawn
- 2005-01-21 KR KR1020067010986A patent/KR100916745B1/ko not_active IP Right Cessation
- 2005-01-21 CN CN2005800029969A patent/CN1910601B/zh not_active Expired - Fee Related
- 2005-01-21 JP JP2005517273A patent/JP4669788B2/ja not_active Expired - Fee Related
- 2005-01-21 CA CA2554580A patent/CA2554580C/en not_active Expired - Fee Related
- 2005-01-21 WO PCT/JP2005/000752 patent/WO2005071609A1/ja active Application Filing
-
2006
- 2006-06-06 US US11/447,765 patent/US7499764B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831138A (zh) * | 2011-06-14 | 2012-12-19 | 株式会社东芝 | 分散数据库检索装置及分散数据库检索方法 |
CN102831138B (zh) * | 2011-06-14 | 2015-10-28 | 株式会社东芝 | 分散数据库检索装置及分散数据库检索方法 |
CN107450384A (zh) * | 2016-03-29 | 2017-12-08 | 伊利诺斯工具制品有限公司 | 迫近热关断警报系统和热关断方法 |
CN107450384B (zh) * | 2016-03-29 | 2021-12-10 | 伊利诺斯工具制品有限公司 | 迫近热关断警报系统和热关断方法 |
CN109011580A (zh) * | 2018-06-29 | 2018-12-18 | 腾讯科技(深圳)有限公司 | 残局牌面获取方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2005071609A1 (ja) | 2007-09-06 |
US20070010901A1 (en) | 2007-01-11 |
CA2554580C (en) | 2014-03-25 |
EP1710736A1 (en) | 2006-10-11 |
KR20060120188A (ko) | 2006-11-24 |
US7499764B2 (en) | 2009-03-03 |
KR100916745B1 (ko) | 2009-09-14 |
WO2005071609A1 (ja) | 2005-08-04 |
JP4669788B2 (ja) | 2011-04-13 |
CN1910601B (zh) | 2010-05-05 |
CA2554580A1 (en) | 2005-08-04 |
EP1710736A4 (en) | 2011-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1910601A (zh) | 限制条件解决方法、限制条件解决装置、以及限制条件解决系统 | |
CN1027198C (zh) | 计算装置 | |
CN1144145C (zh) | 用于数据仓库的选择聚集层和交叉产品层的方法和装置 | |
CN1132098C (zh) | 并行分布处理系统及其方法 | |
CN1781078A (zh) | 硬件加速器个性编译器 | |
CN1875345A (zh) | 在编译过程中表示和检查程序组件的一致性的可扩展类型系统 | |
CN1271545C (zh) | 语言翻译系统 | |
CN1821956A (zh) | 用现有内容生成用于执行任务的活动内容向导可执行文件 | |
CN1073540A (zh) | 管理类方法名 | |
CN1073276A (zh) | 语言的中性对象 | |
CN1763743A (zh) | 图表上的自动标签放置系统和方法 | |
CN1744036A (zh) | 报告软件中支持定制图形表示的系统和方法 | |
CN1749958A (zh) | 使用形状的公用图表 | |
CN1752963A (zh) | 文档信息处理设备、文档信息处理方法及处理程序 | |
CN1558348A (zh) | 将基于模式的分级数据结构转换成平面数据结构的方法以及系统 | |
CN1091906C (zh) | 模式识别方法和系统以及模式数据处理系统 | |
CN1609855A (zh) | 查询优化系统和方法 | |
CN1321923A (zh) | 画面程序作成方法、记录媒体 | |
CN1609793A (zh) | 用于计算机平台的编程接口 | |
CN1862490A (zh) | 信号处理装置 | |
CN1794231A (zh) | 具有替换格式的上下文无关的文档部分 | |
CN1573744A (zh) | 进行非结构化信息管理和自动文本分析的系统和方法 | |
CN1568458A (zh) | 无需修改现有代码即可增加新软件特征的方法 | |
CN1914594A (zh) | 用于创建和提供多层联网服务的方法和系统 | |
CN1373876A (zh) | 表格式数据显示方法、插入方法、删除方法和更新方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP02 | Change in the address of a patent holder |
Address after: Kagawa Patentee after: Metalogic Inc. Address before: Tokyo, Japan Patentee before: Metalogic Inc. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100505 Termination date: 20170121 |
|
CF01 | Termination of patent right due to non-payment of annual fee |