專利名稱:限制條件解決方法、限制條件解決裝置、以及限制條件解決系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對于由任意的限制條件構(gòu)成的問題的有效解決,特別涉及僅通過考慮了限制傳播的處理步驟的限制條件以及變量值的設(shè)定就可以執(zhí)行的限制條件解決方法、限制條件解決裝置、以及限制條件解決系統(tǒng)。
背景技術(shù):
對于各種應(yīng)用程序的當(dāng)前的一般的編程方法的主流是,例如,在使用C語言、JAVA等這樣的編程語言,在以過程方式聲明數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,用戶依次記述該數(shù)據(jù)的處理步驟(算法)的過程型編程方法。如果除了通過編譯器的優(yōu)化功能而實(shí)現(xiàn)優(yōu)化等,則原則上該過程型編程方法所實(shí)現(xiàn)的數(shù)據(jù)的處理步驟與計算機(jī)實(shí)際執(zhí)行的處理步驟一致。從而,過程型編程方法是通過詳細(xì)地敘述計算機(jī)(CPU)的動作而可以靈活地應(yīng)對各種問題的解決方法。
作為與這樣的記述CPU的動作的過程型編程方法對應(yīng)的方法,有聲明式編程方法。這是由用戶定義與對象問題對應(yīng)的限制條件后,對于此后的實(shí)際的數(shù)據(jù)處理步驟全部交付給CPU的方法,作為在特定的問題領(lǐng)域適用的問題解決方法而一直在使用(例如,專利文獻(xiàn)1或?qū)@墨I(xiàn)2)。
在所述聲明式編程中具有如下的特征,用戶僅記述限制條件來等待輸出解即可,另一方面,無法干涉CPU以怎樣的步驟進(jìn)行數(shù)據(jù)處理。在當(dāng)前的計算機(jī)環(huán)境中,主要使用如前所述的大體分為兩類的編程方法中的過程型編程方法。
在通過該過程型編程方法進(jìn)行程序開發(fā)的情況下,幾乎都是在用戶進(jìn)行數(shù)據(jù)結(jié)構(gòu)的定義的時刻,事實(shí)上也聯(lián)動地決定了應(yīng)由該數(shù)據(jù)結(jié)構(gòu)記述的算法。而且,該算法在類似的對象問題中以同樣的步驟表現(xiàn),可以模式化。
因此,多數(shù)情況是在各應(yīng)用中重復(fù)進(jìn)行相同的編程作業(yè),程序開發(fā)的低效以往就成為了問題。為了處理該問題,目前通過基于通用的編程部分的程序庫化或面向?qū)ο蟮能浖_發(fā)積極地導(dǎo)入軟件的部件化,正在推進(jìn)集中于現(xiàn)存的程序中沒有的部分的程序作業(yè)的高效率化。
專利文獻(xiàn)1日本特開平5-3548號公報
專利文獻(xiàn)2日本特開平9-81387號公報
發(fā)明內(nèi)容
但是,現(xiàn)實(shí)中被程序庫化的軟件部件龐大并且其數(shù)目逐年增加。各程序員從該龐大的部件組中提取最適合對象問題的部件時,有不少選擇錯誤,考慮到存在必須通過再次重新選擇而重新進(jìn)行開發(fā)作業(yè)的危險性時,存在不利用軟件部件而各程序員從頭開始進(jìn)行編碼作業(yè)的情況也很多的問題。
此外,面向?qū)ο蟮能浖_發(fā)要求一定的技術(shù),因此不一定任何的程序員都能進(jìn)行面向?qū)ο蟮木幊套鳂I(yè),在整體上看存在作業(yè)效率并不怎么提高的問題。
這樣,現(xiàn)狀是存在在程序開發(fā)作業(yè)中依然未解決依賴于個人技術(shù)的封閉的方面或無效率的方面的問題。
另一方面,如前所述,在聲明式編程方法中,至少需要限制條件的記述和該限制條件所使用的數(shù)據(jù)值,在應(yīng)用于實(shí)際的問題的情況下,該限制條件以及數(shù)據(jù)的數(shù)量非常多。這里,實(shí)際的問題例如是滿足fk(X1,X2,…,Xn)≤bk(k=1,2,…,m)的聯(lián)立式,并且使評價函數(shù)f0(X1,X2,…,Xn)為最小值這樣的組合優(yōu)化問題。換言之,如圖17所示,將m個聯(lián)立式以及評價函數(shù)f0所表示的限制條件提供給計算機(jī)側(cè)時,計算機(jī)(圖17的限制消除系統(tǒng))進(jìn)行統(tǒng)一搜索同時滿足所有的限制條件的數(shù)據(jù)的工作。
該組合優(yōu)化問題由于變量X以及聯(lián)立式的數(shù)量越增加則解空間中的組合的可能性按指數(shù)函數(shù)形式增加,因此計算機(jī)上的處理變得復(fù)雜而且龐大。而且,特別在函數(shù)fk為非線性函數(shù)的情況下,有時也存在分散的多個解空間,為了不一味地搜索不存在解的解空間而陷入無限循環(huán)中,需要做出高效率地求解的努力等。另外,除了組合優(yōu)化問題之外,對于組合充分問題、整數(shù)規(guī)劃法等也存在同樣的問題。
進(jìn)而,在產(chǎn)生變更限制條件的條件式或輸入數(shù)據(jù)的一部分的需要時,不得不從最初開始重新計算先前計算出的同樣的限制條件問題,存在造成資源的浪費(fèi),同時非常無效率的問題。
因此,本發(fā)明鑒于上述問題,目的在于不記述作為計算機(jī)上的數(shù)據(jù)處理步驟的算法而用少的計算時間可靠地解決對象問題。
本發(fā)明的限制條件解決方法的特征在于,包括限制條件輸入處理,由用戶輸入考慮了與對象問題有關(guān)的限制傳播的處理步驟的限制條件;變量值設(shè)定處理,設(shè)定通過所述限制條件輸入處理輸入的限制條件所使用的變量的初始值或變動值;限制條件提取處理,從通過所述限制條件輸入處理輸入的限制條件中提取與通過所述變量值設(shè)定處理設(shè)定的值有關(guān)的限制條件;限制條件解計算處理,基于由所述用戶考慮到的限制傳播的處理步驟,對通過所述限制條件提取處理提取出的所有限制條件代入所述變量的初始值或變動值,計算該限制條件的解;以及變量值再設(shè)定處理,將通過所述限制條件解計算處理計算出的解設(shè)定為所述變量值設(shè)定處理中的新的變動值,所述變量值再設(shè)定處理中存在再設(shè)定的新的變動值的期間,反復(fù)進(jìn)行所述限制條件提取處理以及所述限制條件解計算處理。
本發(fā)明的限制條件解決方法包括限制條件輸入處理,輸入限制條件;變量值設(shè)定處理,設(shè)定通過所述限制條件輸入處理輸入的限制條件所使用的變量的值;限制條件提取處理,從通過所述限制條件輸入處理輸入的限制條件中提取與通過所述變量值設(shè)定處理設(shè)定的值有關(guān)的限制條件;以及限制條件解計算處理,計算通過所述限制條件提取處理提取出的限制條件的解,其特征在于,所述限制條件至少由下述情況中的至少任何一種構(gòu)成包含當(dāng)前的數(shù)組元素數(shù)、使所述變量具有多個值、包含基于結(jié)構(gòu)體數(shù)組的元素值的檢索、以及基于默認(rèn)規(guī)則的字符串?dāng)?shù)值變換。
本發(fā)明的限制條件解決裝置的特征在于,包括限制條件輸入單元,其由用戶輸入考慮了與對象問題有關(guān)的限制傳播的處理步驟的限制條件;變量值設(shè)定單元,其設(shè)定由所述限制條件輸入單元輸入的限制條件所使用的變量的初始值或變動值;限制條件提取單元,其從由所述限制條件輸入單元輸入的限制條件中提取與由所述變量值設(shè)定單元設(shè)定的值有關(guān)的限制條件;限制條件解計算單元,其基于由所述用戶考慮到的限制傳播的處理步驟,對由所述限制條件提取單元提取出的所有限制條件代入所述變量的初始值或變動值,計算該限制條件的解;以及變量值再設(shè)定單元,其將由所述限制條件解計算單元計算出的解設(shè)定為所述變量值設(shè)定單元中的新的變動值,所述變量值再設(shè)定單元產(chǎn)生再設(shè)定的新的變動值的期間,由所述限制條件提取單元以及所述限制條件解計算單元反復(fù)進(jìn)行。
本發(fā)明的限制條件解決裝置包括限制條件輸入單元,其輸入限制條件;變量值設(shè)定單元,其設(shè)定由所述限制條件輸入單元輸入的限制條件所使用的變量的值;限制條件提取單元,其從由所述限制條件輸入單元輸入的限制條件中提取與由所述變量值設(shè)定單元設(shè)定的值有關(guān)的限制條件;以及限制條件解計算單元,其計算由所述限制條件提取單元提取出的限制條件的解,其特征在于,所述限制條件由下述情況中的至少任何一種構(gòu)成包含當(dāng)前的數(shù)組元素數(shù)、使所述變量持有多個值、包含基于結(jié)構(gòu)體數(shù)組的元素值的檢索、以及基于默認(rèn)規(guī)則的字符串?dāng)?shù)值變換。
本發(fā)明的限制條件解決系統(tǒng)可互相通信地連接了多個設(shè)備,其特征在于,上述設(shè)備中至少一個設(shè)備具有前述任何一項(xiàng)中記載的限制條件解決裝置的功能。
根據(jù)本發(fā)明,輸入考慮了對于對象問題的限制傳播的處理步驟的限制條件以及限制條件所使用的變量的值(初始值)時,重復(fù)以下處理,即在提取了與該變量的值相關(guān)聯(lián)的限制條件的基礎(chǔ)上導(dǎo)出分別滿足該限制條件的解,同時作為變量的新的值(變動值)而代入所導(dǎo)出的解,求所述各限制條件的解,所以可以不具有與其它的限制條件的“與”關(guān)系而求各限制條件單獨(dú)的解,可以一邊高速地進(jìn)行計算處理一邊得到最終解。
圖1是表示本發(fā)明的第一實(shí)施方式中的限制條件解決裝置的基本的構(gòu)成要素的整體結(jié)構(gòu)圖。
圖2是表示本發(fā)明的第一實(shí)施方式中的限制條件解決裝置的動作步驟的流程圖。
圖3是本發(fā)明的第二實(shí)施方式中的限制條件解決裝置的整體結(jié)構(gòu)圖。
圖4是表示第一實(shí)施方式中的限制條件解決裝置的限制條件存儲單元對計算機(jī)的存儲區(qū)域存儲限制條件的方式例子的圖。
圖5是表示與會計計算問題有關(guān)的數(shù)據(jù)結(jié)構(gòu)的一例的圖。
圖6是表示與會計計算問題有關(guān)的限制條件的存儲方式的一例的圖。
圖7是表示數(shù)據(jù)結(jié)構(gòu)的一例的圖。
圖8是本發(fā)明的第三實(shí)施方式中的限制條件解決裝置的整體結(jié)構(gòu)圖。
圖9是表示通過限制條件提取單元實(shí)現(xiàn)的解決方法的執(zhí)行步驟的圖。
圖10是本發(fā)明的第四實(shí)施方式中的限制條件解決裝置的整體結(jié)構(gòu)圖。
圖11是與Web服務(wù)器組合進(jìn)行數(shù)據(jù)顯示的系統(tǒng)的概念圖。
圖12(a)-(b)是表示在圖11所示的系統(tǒng)中,在函數(shù)類型定義保持單元以及限制條件存儲單元中存儲的信息或限制條件的一例的圖。
圖13是表示在一般的窗口界面中,用限制條件記述數(shù)據(jù)和用戶界面的關(guān)系的一例的圖。
圖14是表示多窗口系統(tǒng)的一例的圖。
圖15是概念性地表示實(shí)現(xiàn)窗口系統(tǒng)的客戶端/服務(wù)器系統(tǒng)中的客戶端側(cè)的結(jié)構(gòu)的圖。
圖16是用于說明在GUI客戶端中,GUI控制部控制各部分的動作的圖。
圖17是表示現(xiàn)有的聲明式編程方法中的解法步驟的圖。
圖18是概念性地表示現(xiàn)有的編程語言環(huán)境和本發(fā)明的限制條件的求解的限制消除系統(tǒng)的定位的圖。
圖19是概念性地表示現(xiàn)有的編程語言環(huán)境的構(gòu)成的圖。
圖20是表示與將數(shù)據(jù)定義和限制式集中的類化相關(guān)的概念的圖。
圖21是表示訪問數(shù)組結(jié)構(gòu)的限制條件時的運(yùn)算符例子的圖。
圖22是表示將通常的LISP語言的內(nèi)部數(shù)據(jù)結(jié)構(gòu)極簡化的一例的圖。
圖23是表示可以雙向追溯LISP語言的基本數(shù)據(jù)結(jié)構(gòu)的一例的圖。
圖24(a)-(h)是表示用戶輸入限制條件以及值,輸出計算結(jié)果等的畫面例子的圖。
符號說明 1限制條件輸入單元 2變量值設(shè)定單元 3限制條件提取單元 4限制條件解計算單元 5變量值再設(shè)定單元 6限制條件存儲單元 7變量值存儲單元 8限制條件提取單元 9函數(shù)定義保持單元 10 函數(shù)定義執(zhí)行單元 11 數(shù)據(jù)庫 12 系統(tǒng)資源 100 限制條件解決裝置 300 限制條件解決裝置 300 限制條件解決裝置 400 限制條件解決裝置
具體實(shí)施例方式 以下,參照附圖詳細(xì)說明本發(fā)明的優(yōu)選的實(shí)施方式。
圖18是概念性地表示現(xiàn)有的編程語言環(huán)境和對本發(fā)明的限制條件進(jìn)行求解的限制消除系統(tǒng)的定位的圖。如圖18所示,現(xiàn)有的編程語言環(huán)境中有程序語言處理系統(tǒng)、程序代碼、數(shù)據(jù),程序語言處理系統(tǒng)為控制程序代碼以及數(shù)據(jù)的形式。在本發(fā)明中,其結(jié)構(gòu)為除了現(xiàn)有的編程語言環(huán)境中的數(shù)據(jù)之外,還具有限制式(限制條件)以及限制消除系統(tǒng),是連接成各自可互相進(jìn)行信息交換的結(jié)構(gòu)。
此外,圖19也是現(xiàn)有的編程語言環(huán)境,是以程序庫的形式構(gòu)成所述現(xiàn)有的限制消除系統(tǒng)時的結(jié)構(gòu)圖。
(第一實(shí)施方式) 首先,說明本發(fā)明的第一實(shí)施方式中的限制條件解決裝置的基本結(jié)構(gòu)及其基本動作。
<限制條件解決裝置100的基本結(jié)構(gòu)> 圖1是表示限制條件解決裝置100的基本的構(gòu)成要素的整體結(jié)構(gòu)圖。
如圖1所示,限制條件解決裝置100包含限制條件輸入單元1、變量值設(shè)定單元2、限制條件提取單元3、限制條件解計算單元4、變量值再設(shè)定單元5。
限制條件輸入單元1用于用戶輸入在頭腦中浮現(xiàn)計算機(jī)(CPU)實(shí)現(xiàn)的限制傳播的處理步驟而決定的限制條件。
變量值設(shè)定單元2用于對構(gòu)成由限制條件輸入單元1輸入的限制條件的各變量設(shè)定用戶指定的具體的初始值。此外,后面詳細(xì)敘述,對于各變量也設(shè)定初始值以外的值(以下,稱作變動值)。
此外,限制條件輸入單元1以及變量值設(shè)定單元2是所謂用于數(shù)據(jù)輸入的U/I,不特別限定,包含可以容易地進(jìn)行輸入的各種工具,可以具有能確認(rèn)用戶輸入的值的顯示(監(jiān)視)畫面。另外,也可以構(gòu)成為具有對用戶提示由限制條件解決裝置100計算出的值的輸出顯示單元(未圖示)。該輸出顯示單元也可以具有能確認(rèn)輸出值的顯示(監(jiān)視)畫面。進(jìn)而,作為限制條件輸入單元1(包含變量值設(shè)定單元2)以及輸出顯示單元之一,也可以是可以進(jìn)行數(shù)據(jù)的輸入輸出的輸入輸出單元。
限制條件提取單元3從所輸入的限制條件中提取具有設(shè)定了初始值或變動值的各變量作為構(gòu)成元素的限制條件。在本實(shí)施方式中,限制條件提取單元3構(gòu)成為集中提取相應(yīng)的限制條件,但也可以依次重復(fù)在通過后述的限制條件解計算單元4求出了某一個限制條件的解之后提取下一個限制條件,這樣地一個一個進(jìn)行提取。
限制條件解計算單元4求解代入初始值或變動值后的各限制條件,但作為本發(fā)明的特征,不是作為滿足所有限制條件的所謂的聯(lián)立解而統(tǒng)一求解,而是一次以一個各限制條件為對象來求解。因此,某一變量的值被設(shè)定或變更時,以順序方式按照規(guī)定的順序依次求限制條件的第一次的解。這里,所述規(guī)定的順序是由用戶(程序員)考慮限制傳播的處理步驟而輸入的限制條件所表示的順序。
這里,限制條件的具體例子如下所示。
(A)限制條件的例子1 作為為了容易地理解聲明式編程方法而作為說明使用的典型的例題,舉出以下的會計計算問題。
現(xiàn)將四個物品的價格和個數(shù)分別設(shè)為(1)100日元、2個,(2)200日元,3個,(3)300日元,2個,(4)50日元,3個時,如果使用價格、個數(shù)以及小計的數(shù)組變量來表示本發(fā)明所說的限制條件,則為 價格[1]=100,價格[2]=200,價格[3]=300,價格[4]=50…(式1) 個數(shù)[1]=2,個數(shù)[2]=3,個數(shù)[3]=2,個數(shù)[4]=3…(式2) 小計[i]=價格[i]×個數(shù)[i](i=1~4)…(式3) 合計=∑小計[i](i=1~4)…(式4)。
(式1)以及(式2)是限制條件中的特別是變量數(shù)據(jù)的設(shè)定。
從所述(式1)~(式4)的記述可知,在過程型編程的情況下所需的0→合計(→表示代入,以下相同)、合計+小計[1]→合計、合計+小計[2]→合計、合計+小計[3]→合計、合計+小計[4]→合計的重復(fù)循環(huán)的記述在聲明式編程的情況下是不需要的。
(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)是變量數(shù)據(jù)的定義,(式6)~(式7)是對變量的值代入,以及所述(式8)~(式9)是具體的執(zhí)行式。此外,&運(yùn)算符是字符串連接運(yùn)算符。如所述(式6)~(式7)這樣,任意地改寫字符串name、message而生成由output輸出的HTML用文本。
(C)限制條件的例子3 下面表示記述了對字符串str依次連接其他的字符串a(chǎn)dd的動作的限制條件。
string str;…(式10) string add;…(式11) str=str & add …(式12) 所述(式10)以及(式11)是變量數(shù)據(jù)的定義,所述(式12)是具體的執(zhí)行式。本例中的字符串str的值變更引起的限制傳播在每次字符串a(chǎn)dd的值被變更時,重復(fù)對字符串str追加字符串a(chǎn)dd的值。
這里,請注意限制條件不必是如所述(A)~(C)所示的等號或不等號所表示的表達(dá)式。而且,限制式的評價最終以真或假作為回答,與C語言等同樣,例如僅以f(x)作為限制條件記述的情況下,執(zhí)行該f(x),根據(jù)結(jié)果為真或假來判斷并處理。
變量值再設(shè)定單元5為了通過限制條件提取單元3以及限制條件解計算單元4來求出第2次以后的解,將由限制條件解計算單元4求出的第1次的解設(shè)定為各變量的新的值、即變動值。然后,在不存在由限制條件解計算單元4變更的解而到達(dá)最終解之后,限制條件解決裝置100另外收到結(jié)束指令時,求一系列限制條件的解的處理結(jié)束。
如前所述,本發(fā)明的特征之一是重復(fù)進(jìn)行將值代入提取出的各限制條件的變量而依次求解一個一個限制條件。為此,前提是考慮限制傳播的處理步驟而由用戶預(yù)先針對限制條件而進(jìn)行設(shè)定。
另外,在限制條件解決裝置100的處理中,陷入了不能求解的不能解、或不能確定解的解不定的狀態(tài)的情況下,通過執(zhí)行計算機(jī)中預(yù)先定義的適當(dāng)?shù)睦馓幚?,作為程序錯誤輸出,而這表示用戶定義了無法求解的限制條件。在本實(shí)施方式的限制條件解決裝置100中,用戶擔(dān)負(fù)不得不設(shè)定考慮了計算機(jī)的處理步驟的限制條件的負(fù)擔(dān),成為本來應(yīng)求解的處理步驟,但這與現(xiàn)有的過程型編程作業(yè)相比已經(jīng)是很輕松的作業(yè)了。
<限制條件解決裝置100的整體動作> 接著,說明所述結(jié)構(gòu)的限制條件解決裝置100的整體動作。
圖2是表示限制條件解決裝置100的動作步驟的流程圖。
首先,在步驟S20中,判斷對限制條件所使用的變量是否設(shè)定了初始值。所述判斷的結(jié)果,在還未對構(gòu)成限制條件輸入單元1所輸入的限制條件的各變量設(shè)定初始值的情況下,在步驟S21中,變量值設(shè)定單元2設(shè)定用戶指定的初始值。
接著,在步驟S22中,限制條件提取單元3判斷各變量的值是否未被變更。在作為限制條件對變量設(shè)定了初始值時,作為最初的變更進(jìn)至下一步驟S22。在一次設(shè)定初始值之后,后述的步驟的處理結(jié)束時,限制條件解決裝置100在該步驟S22中維持等待的狀態(tài),直到有新的變量的值變更。另外,本流程圖未示出‘結(jié)束’,但在從外部輸入了動作結(jié)束指示命令時,限制條件解決裝置100控制為執(zhí)行規(guī)定的動作處理(未圖示)而結(jié)束一系列的動作。
在步驟S23中,限制條件提取單元3生成以在步驟S22中變更后的變量為元素的集合S。這里,生成集合S表示例如在計算機(jī)上的某一存儲區(qū)域中寫入所述變更后的變量的名稱或可以識別變量的數(shù)組元素的下標(biāo)等。
進(jìn)而,限制條件提取單元3判斷所述集合S中是否存在元素,即是否有由變量值設(shè)定單元2變更了值的變量(步驟S24)。所述判斷的結(jié)果,在集合S中有元素時(集合S不是空集時),限制條件提取單元3從集合S中每次取出一個元素Sm(步驟S25)。
接著,在步驟S26中,生成與所述取出的元素Sm相關(guān)聯(lián)的限制條件的集合Q。也就是說,如果有包含元素Sm而構(gòu)成的限制條件,則限制條件提取單元3將其輸出到集合Q。接著,在步驟S27中,在所述集合Q中存在元素的期間,重復(fù)進(jìn)行以下的步驟S28~步驟S30。
在步驟S28中,限制條件解計算單元4從集合Q中取出一個限制條件Qm。然后,限制條件解計算單元4求解在步驟S28中取出的限制條件Qm,求出為了滿足限制條件Qm而應(yīng)變更的變量及其值(步驟S29)。
這里,步驟S29中的處理的詳細(xì)內(nèi)容如下所示。
(1)檢查是否滿足限制條件Qm,在滿足時結(jié)束本步驟S29。
(2)求為了滿足限制條件Qm而應(yīng)變更的變量及其值。
(3)檢驗(yàn)所述(2)中求出的變量的值是否正確。
所述(2)作為步驟S29的處理是必需的,而對于其它的(1)以及(3)不一定也是這樣。也可以由用戶根據(jù)對象問題來判斷是否需要,作為判斷條件來明示或暗示地指示。
進(jìn)而,在步驟S30中,變量值再設(shè)定單元5對步驟S29中求出的變量再設(shè)定所求出的值,在然后的處理中基于該再設(shè)定的值來求解限制條件。
從而,在某一變量被變更的情況下,如果有與該變量相關(guān)聯(lián)的多個限制條件,則依次求出每個一個一個取出的限制條件的解,同時,由得到的解對集合S的最后部分追加該變量。
另一方面,由步驟S28取出限制條件Qm的結(jié)果,在步驟S27中判斷為集合Q中沒有元素的情況下,一系列的處理返回步驟24,從集合S取出下一個變量Sm而重復(fù)同樣的處理。
其結(jié)果,在集合S中沒有元素時,作為限制條件解決裝置100的處理,相當(dāng)于進(jìn)入穩(wěn)定狀態(tài)的狀態(tài),如前所述,在對限制條件所使用的任意的變量設(shè)定新的值之前,在步驟S22中處于等待的狀態(tài)。
在本實(shí)施方式中,在步驟S25中取出在集合S中包含多個變量Sm時的變量Sm的順序,或在步驟S28中取出限制條件Qm的順序,考慮限制傳播的處理步驟,采用用戶明示地指定該順序(優(yōu)先順序)而使計算機(jī)進(jìn)行的限制條件的設(shè)定方法。具體來說,例如,通過預(yù)先決定為該優(yōu)先順序是限制條件所記載的順序來達(dá)成。以下表示其具體例。
再次使用所述會計計算問題。
限制條件為 價格[1]=100,價格[2]=200,價格[3]=300,價格[4]=50…(式1) 個數(shù)[1]=2,個數(shù)[2]=3,個數(shù)[3]=2,個數(shù)[4]=3…(式2) 小計[i]=價格[i]×個數(shù)[i](i=1~4)…(式3) 合計=∑小計[i](i=1~4)…(式4)。
所述(式1)~(式4)的記載順序有含義。例如,第一個所記載的限制條件(限制式)的優(yōu)先順序最高,以下依次降低。在該情況下,表示優(yōu)先通過(式1)以及(式2)對各變量設(shè)定值,(式3)、(式4)然后將限制式登記到計算機(jī)內(nèi)部。
限制式的執(zhí)行順序在執(zhí)行時決定,但從集合S、集合Q取出元素的順序是不確定的。為了決定該順序,作為明示的方法,有用記載順序判斷或?qū)ο拗剖皆O(shè)定優(yōu)先順序的方法。
此外,也可以是計算機(jī)(CPU)自動進(jìn)行所述優(yōu)先順序的結(jié)構(gòu)。在該情況下,用戶需要設(shè)定由不管計算機(jī)以什么順序進(jìn)行、在計算過程中也不會產(chǎn)生矛盾的內(nèi)容以及記載順序構(gòu)成的限制條件,但這是只要用戶作為程序員而具備通常的知識或經(jīng)驗(yàn)就能夠容易地完成的作業(yè)。
接著,使用所述會計計算的例子,隨著具體的限制條件的變量值的變化來說明圖2的流程圖所示的動作步驟。
例如,假設(shè)將價格[2]如200→250這樣地變更時。由于不是初始值的設(shè)定而是數(shù)據(jù)的變更,所以從步驟S20進(jìn)至步驟S22。通過步驟S23,成為集合S={價格[2]}。由于在步驟S24中判斷為集合S中存在元素,所以在步驟S25中價格[2]被取出。
接著,在步驟S26中,作為僅與價格[2]相關(guān)聯(lián)的限制條件的、小計[2]=價格[2]×個數(shù)[2]成為集合Q的元素。也就是說,生成集合Q={小計[2]=價格[2]×個數(shù)[2]}。
接著,由于在步驟S27中判斷為集合Q中有元素,所以在步驟S28中,取出小計[2]=價格[2]×個數(shù)[2]的限制條件。在步驟S29中,計算限制條件的解,即小計[2]=250×3=750,在步驟S30中,對小計[2]設(shè)定該變更值750,對集合S追加小計[2],生成集合S={小計[2]}。
然后,返回步驟S27,由于從先前的集合Q中取出僅有的一個元素,集合Q為空集,所以此后進(jìn)至步驟S24。
在步驟S24中,判斷先前追加的集合S的小計[2],在步驟S25中取出該小計[2]。
接著,在步驟S26中,生成以作為僅與小計[2]相關(guān)聯(lián)的限制條件的、合計=∑小計[i](i=1~4)作為元素的集合Q。也就是說,生成集合Q={合計=∑小計[i](i=1~4)}。在步驟S28中取出該限制條件,在步驟S29中,計算限制條件的解,即合計=200+750+600+150=1700,步驟S30中,對變量的(合計)設(shè)定該變更值1700。同時,對集合S存儲變量的(合計)。接著,執(zhí)行步驟S27、S24、S25、S26,由于存在有關(guān)聯(lián)的限制式,所以集合Q中沒有被追加的元素。
此時,為了縮短計算時間,可以如下地進(jìn)行簡化。即,在步驟S29中,在求限制條件的解時不是再一次進(jìn)行加法運(yùn)算,而是僅利用變化后的值來進(jìn)行差分消除。然后,在步驟S30中,可知不存在與合計相關(guān)聯(lián)的限制條件,所以為了縮短計算時間而不對集合S追加元素。
再次返回步驟S27,由于從先前的集合Q中取出僅有的一個元素,集合Q為空集,所以然后進(jìn)至步驟S22,限制條件解決裝置100接著處于等待狀態(tài)直到有來自外部的數(shù)據(jù)變更為止。
另外,在所述限制條件解決裝置100的動作中的步驟S28的處理中,說明了從集合Q一次取出一個限制條件Qm并求其解的處理,但不是必需一次取出一個。在可以同時求限制式的解的情況下,從集合Q中取出2或以上的限制條件。由此,可以進(jìn)一步擴(kuò)展可解決的對象問題。
進(jìn)而,限制條件Qm的實(shí)際的解法不限于會計問題這樣的通過簡單的算式變形來求解的做法。與現(xiàn)有的算式有關(guān)的解法都可以使用,允許由此導(dǎo)入n次方程式的解法。
此外,作為其它的具體例,說明追加、刪除限制條件所使用的數(shù)據(jù)的個數(shù)本身時的處理。
在所述會計計算的例子中,分別以數(shù)組來表現(xiàn)價格以及個數(shù)的變量,將數(shù)據(jù)個數(shù)固定為各4個而設(shè)定了限制條件,但考慮將數(shù)據(jù)個數(shù)本身作為變量時的限制條件。對當(dāng)前的限制條件加上價格[5]、個數(shù)[5]而如下地進(jìn)行變更。
價格[1]=100,價格[2]=250,價格[3]=300,價格[4]=50,價格[5]=310…(式13) 個數(shù)[1]=2,個數(shù)[2]=3,個數(shù)[3]=2,個數(shù)[4]=3,個數(shù)[5]=3…(式14) 項(xiàng)目總數(shù)=5…(式15) 小計[i]=價格[i]×個數(shù)[i](i為任意的整數(shù))…(式16) 合計=∑小計[i](i=1~項(xiàng)目總數(shù))…(式17) 如果完全同樣地進(jìn)行前述的處理,則成為 小計[5]=價格[5]×個數(shù)[5]=310×3=930, 合計=∑小計[i]=200+750+600+150+930=2630,可以導(dǎo)出解而不會殘留未解決的限制條件。這樣的變更在進(jìn)行變量或限制條件的刪除的情況下也同樣,也可以變更由可變長度數(shù)組等表示的變量的個數(shù)。
對此,在圖24中表示用戶使用實(shí)際的輸入輸出單元(例如,限制條件輸入單元1)輸入限制條件以及值的畫面例子。另外,圖24的畫面例子相當(dāng)于具有輸出功能的限制條件輸入單元1以及變量值設(shè)定單元2的畫面例子,是作為具有與一般的編程語言同等的輸入輸出界面的結(jié)構(gòu)而安裝在UNIX上的執(zhí)行例子。圖24(a)~(h)的輸出輸出為一系列的,為了方便而分開顯示。
如圖24(a)所示,首先,在‘$’所表示的UNIX提示后,用戶輸入‘ripple’(圖24(b))。由此,安裝了本發(fā)明的處理的程序被載入,在畫面上表示‘%’,督促用戶輸入數(shù)據(jù)(%以后為用戶的輸入數(shù)據(jù),換行之后的下一行顯示接收到的數(shù)據(jù)值或計算輸出值)。
因此,用戶進(jìn)行初始值限制式輸入(圖24(c)的241)。這里,242的限制式將合計計算抽象化為函數(shù)—數(shù)組總合計(),但也可以用如圖21所示的限制式來表現(xiàn)。此外,也可以直接記述過程循環(huán)結(jié)構(gòu)(參照與函數(shù)型語言的融合)。然后,在以步驟S29的處理實(shí)現(xiàn)合計計算的差分消除時,限制條件解決裝置100側(cè)進(jìn)行判斷而自動處理,用戶意識不到。
接著,用戶設(shè)定初始值(圖24(d)的243、244)。執(zhí)行步驟S22~步驟S30所示的處理,但為了實(shí)現(xiàn)執(zhí)行的效率,在不是明顯需要時,可以通過限制條件解決裝置100側(cè)的判斷而不執(zhí)行。圖24(c)的245中,由‘load’從文件中讀入剩余的輸入值。在該時刻,小計、合計被計算而設(shè)定完畢,通過在246輸入‘合計’,當(dāng)前的合計值被顯示而可以取得執(zhí)行結(jié)果。輸入圖24(f)的247時,執(zhí)行圖2的步驟S26。然后,雖然沒有計算中途的畫面輸出,但步驟S22~步驟S30所示的處理被執(zhí)行,由248的輸入顯示執(zhí)行結(jié)果的合計值。249、250的輸入追加設(shè)定限制條件所使用的數(shù)據(jù)的個數(shù)。然后,由圖24(g)的251的輸入對執(zhí)行結(jié)果顯示合計值,通過圖24(h)的252的輸入來進(jìn)行結(jié)束指令的發(fā)布。
此外,也可以構(gòu)成為將幾個數(shù)據(jù)定義和限制式集合而成的結(jié)構(gòu)定義為類化概念中的一個類,提供參數(shù)而進(jìn)行實(shí)例(即instance)化,將限制式和值作為一個組。由此,由于可以將設(shè)定的限制條件分割為多個,所以適于僅執(zhí)行必要最小限度的處理的情況等。圖20表示與該類化有關(guān)的概念。該類可以繼承,例如,存在具有圖20所示的變量1、變量2以及限制式1的類A、具有變量3的類B時,可以生成繼承該類A以及類B、進(jìn)而繼承限制式2的圖20的類。
另外,從本實(shí)施方式的限制條件解決裝置100的結(jié)構(gòu)以及動作可知,在本發(fā)明中,例如,未設(shè)定所有的限制條件不違反限制這樣的評價式(評價條件)。在現(xiàn)有的聲明式編程中,多數(shù)情況是進(jìn)行如下處理在求限制條件的解時,基于該評價式判斷在限制條件間是否不矛盾。這是因?yàn)樵诒景l(fā)明中,以在限制條件的設(shè)定時,用戶設(shè)定為不產(chǎn)生矛盾為前提。從而,限制條件解決裝置100最后一定可以求解,無法求出解時為用戶的限制條件設(shè)定錯誤。
執(zhí)行時不需要與限制違反的存在有關(guān)的評價式,但通過作為輔助功能來準(zhǔn)備,當(dāng)然對調(diào)試時等的問題發(fā)生時的處理或錯誤的發(fā)現(xiàn)有利。
根據(jù)本實(shí)施方式的限制條件解決裝置100,由于構(gòu)成為設(shè)定了與對象問題有關(guān)的限制條件以及該限制條件所使用的變量的初始值或變動值時,提取與該變量相關(guān)聯(lián)的限制條件而依次求每個限制條件的解,將該求出的解作為新的變量值而重復(fù)求各限制條件的解,所以可以根據(jù)任意的數(shù)據(jù)結(jié)構(gòu)和將該數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)間連接的限制條件來解決對象問題。
也就是說,所設(shè)定的限制條件被構(gòu)成為不記述如現(xiàn)有的過程型編程這樣的用于解決對象問題的算法,在數(shù)據(jù)結(jié)構(gòu)中包含與該算法相當(dāng)?shù)闹噶畹幕A(chǔ)上,沿著限制傳播的處理步驟記載,不求所有的限制條件成立的最佳解而每次求一個限制條件的解,所以求解的條理變得明確,同時求解格外簡單化的各限制條件(例如,一元方程式)即可,因此可以可靠地達(dá)到最終的解,可以使運(yùn)算處理格外高速化。
此外,由于可以在限制條件中直接記述問題的解決方法,因此用戶不必一定具有如現(xiàn)有的編程語言的特殊專門知識,可以容易地解決對象問題。
(第二實(shí)施方式) 在所述第一實(shí)施方式中,在限制條件解決裝置100中,構(gòu)成為包含限制條件輸入單元1、變量值設(shè)定單元2、限制條件提取單元3、限制條件解計算單元4、變量值再設(shè)定單元5,但在本實(shí)施方式的限制條件解決裝置200中,特征在于,除了具有第一實(shí)施方式的限制條件解決裝置100中的各構(gòu)成單元1~5之外,還包括限制條件存儲單元6以及變量值存儲單元7。
另外,對于本實(shí)施方式的限制條件解決裝置200的結(jié)構(gòu)和第一實(shí)施方式中的限制條件解決裝置100中共用的構(gòu)成部分標(biāo)以同一標(biāo)號,并省略詳細(xì)說明。
圖3表示本實(shí)施方式的限制條件解決裝置200的整體結(jié)構(gòu)。
限制條件存儲單元6將由限制條件輸入單元1輸入的限制條件存儲在規(guī)定的存儲區(qū)域中。此外,變量值存儲單元7存儲由變量值設(shè)定單元2設(shè)定的變量值(初始值、變動值)。
此外,本實(shí)施方式的限制條件提取單元8除了具有第一實(shí)施方式中的限制條件提取單元3的功能之外,還具有將新設(shè)定的限制條件或變動值與存儲在所述存儲區(qū)域中的限制條件或值進(jìn)行比較,僅在兩者不一致的情況下進(jìn)行限制條件的提取的功能。另外,限制條件提取單元8不必總進(jìn)行所述比較,當(dāng)然也可以從限制條件存儲單元6以及變量值存儲單元7中提取限制條件以及變量值。
圖4(a)是表示限制條件存儲單元6對計算機(jī)的存儲區(qū)域(例如,內(nèi)存、磁盤等)存儲限制條件的方式例子的圖。換言之,假設(shè)存在由三個限制式(限制式1、限制式2、限制式3)參照變量X的限制條件,示出對該變量X設(shè)定了值246時的存儲區(qū)域的表示方法。圖6以及圖5表示以該形式表示所述會計計算問題的限制條件時的一例。
例如圖4(b)所示,算式(x=y(tǒng)+z)被分割后存儲。其中,不限定為這樣的表示方法。作為限制條件的存儲方式,不必一定由值和限制式分割存儲區(qū)域,例如,也可以不以限制式作為結(jié)構(gòu)來分割而具有字符串等。
此外,不限于圖5所示的數(shù)據(jù)結(jié)構(gòu),例如,也可以是以下所示的存儲區(qū)域。
·變量的值分為多種,某一值僅被記錄在存儲器上,其它的值被記錄到文件或數(shù)據(jù)庫,從而可以使記錄區(qū)域上的值變得永久,或者也可以在時刻系統(tǒng)等中具有特別的含義。
·也可以不必以指針表示變量名而直接具有。
·不必一定直接保持變量的值。
·在程序的編譯時等不必識別變量,所以變量名不是必須的。
·限制條件所使用的限制式也可以不是列表。
·也可以不具有限制式列表,而如圖7所示,是根據(jù)變量名來檢索限制式的結(jié)構(gòu)。但是,不限定為如圖7所示的存儲器和指針結(jié)構(gòu)。
此外,假設(shè)包含通過上述變形而存在很多的數(shù)據(jù)類型的全部。
根據(jù)本實(shí)施方式的限制條件解決裝置200,由于構(gòu)成為在規(guī)定的記錄區(qū)域中臨時或永久地保持與對象問題有關(guān)的限制條件以及該限制條件所使用的變量的初始值或變動值,所以本實(shí)施方式的限制條件提取單元8可以進(jìn)行如下處理,即僅在限制條件或變量值產(chǎn)生了變更的情況下,求解與變更后的變量Sm相關(guān)聯(lián)的限制條件Qm,求為了滿足Qm而應(yīng)變更的變量及其值。
由此,產(chǎn)生即使限制條件存在變更,有時對于多個限制條件全部、不從最初起重新計算也可完成,可以實(shí)現(xiàn)計算時間的效率。
(第三實(shí)施方式) 在所述第一實(shí)施方式的限制條件解決裝置100中,構(gòu)成為包含限制條件輸入單元1、變量值設(shè)定單元2、限制條件提取單元3、限制條件解計算單元4、變量值再設(shè)定單元5,在所述第二實(shí)施方式的限制條件解決裝置200中還具有限制條件存儲單元6以及變量值存儲單元7,但在本實(shí)施方式的限制條件解決裝置300中,如圖8所示,特征在于具有函數(shù)定義保持單元9以及函數(shù)定義執(zhí)行單元10。
不論是第一實(shí)施方式的限制條件解決裝置100和第二實(shí)施方式的限制條件解決裝置200的哪一個,都可以采用還具有函數(shù)定義保持單元9和函數(shù)定義執(zhí)行單元10的結(jié)構(gòu),但為了簡化說明,以對限制條件解決裝置100附加后的結(jié)構(gòu)進(jìn)行說明。
另外,對于本實(shí)施方式的限制條件解決裝置300的結(jié)構(gòu)和第一實(shí)施方式中的限制條件解決裝置100中共用的構(gòu)成部分標(biāo)以同一標(biāo)號,并省略詳細(xì)說明。
從編程方法來看,本實(shí)施方式的限制條件解決裝置300的結(jié)構(gòu)具有的作用在于,相對于第一實(shí)施方式用完全的聲明式編程方法進(jìn)行問題解決,第三實(shí)施方式融合了現(xiàn)有的過程型編程方法。這是由于對于難以用聲明式編程解決的一部分問題利用過程型編程方法,從而對于任何的對象問題都實(shí)現(xiàn)靈活的問題解決。
圖8表示本實(shí)施方式的限制條件解決裝置300的整體結(jié)構(gòu)。
函數(shù)定義保持單元9保持用戶通過限制條件輸入單元1以及變量值設(shè)定單元2用現(xiàn)有的過程型編程記述的過程以及變量值。函數(shù)定義保持單元9與限制條件提取單元3連接成可以相互進(jìn)行數(shù)據(jù)的輸入輸出。
另外,不必采用如本實(shí)施方式的限制條件輸入單元1這樣的、一定在限制條件以外還許可過程型的記述的結(jié)構(gòu)。例如,也可以是另外具有過程型的記述專用的輸入單元的結(jié)構(gòu)。對于變量值設(shè)定單元2也同樣,也可以具有以過程型記述的過程變量專用的變量值設(shè)定單元。
函數(shù)定義執(zhí)行單元10使計算機(jī)實(shí)際地執(zhí)行由函數(shù)定義保持單元9保持的過程。此外,函數(shù)定義執(zhí)行單元10與限制條件解計算單元4連接成可以相互進(jìn)行數(shù)據(jù)的輸入輸出。
以具體例說明本實(shí)施方式的限制條件解決裝置300的處理。現(xiàn)假設(shè)在作為限制條件記述的限制式中包含y=sin(x)或y=?jīng)]有反函數(shù)的函數(shù)(x)等的情況。
在該情況下,在圖2所示的步驟S29中,為了求變量x的值,采用x=sin-1(y)這樣的表達(dá)式變形進(jìn)行了處理時,有時不能利用反函數(shù)sin-1的值域的關(guān)系來求x值。此外,y=?jīng)]有反函數(shù)的函數(shù)f(x)時,不能根據(jù)y值求x值。在這樣的時候,自由取入現(xiàn)有的過程型編程的用戶函數(shù)來進(jìn)行處理。
例如,在解限制式時,許可記述為可從多個中選擇解決方法。如果將限制條件設(shè)為a=f(b),則為了求變量b的值,準(zhǔn)備{a=f(b),b=f rev(a)},只要可以應(yīng)用某一個,就可以求解限制式。
此外,在y=f(1,m)的限制式的變量1,m的值未被決定的情況下,或y>x這樣的不等式的情況下,也不能簡單地求解該限制式。在不等式y(tǒng)>x的情況下,在x的值為n時,僅得到y(tǒng)大于n的信息,可以說變量y的值未確定最終的解。在這樣的情況下,也可以作為限制條件的設(shè)定錯誤進(jìn)行處理之外,將y>n的信息直接代入與y有關(guān)的限制式中來繼續(xù)進(jìn)行處理。對于僅關(guān)注于一個方程式則不能求解的z=x+y也同樣,通過許可在多個式和多個值之間處理聯(lián)立方程式而可以解決。
由此,可以通過與其它的限制式的條件的關(guān)聯(lián)來限定變量y的值,可以進(jìn)一步縮窄,或者也有時y>n直接作為解而成立。這樣,作為變量值直接處理不等式等而不是處理確定的值,由其它的限制式可解決時盡可能解決。換言之,此時的限制條件提取單元3執(zhí)行如圖9所示的關(guān)系的解決方法??墒瓜拗剖降慕膺^程具有靈活性,具有與使用過程型編程的現(xiàn)有的程序同樣,或其以上的解決能力,使得圖9中的限制式的x值被變更時,執(zhí)行不是代入x的形式的所有的表達(dá)式(解決方法1~解決方法3)。
此外,不僅在反函數(shù)等的問題上難以表示為限制式的情況,對于通??梢员硎緸橄拗剖降谋磉_(dá)式,只要構(gòu)成為變形為如圖9所示的解決方法的形式來保持,也可以期待提高處理執(zhí)行時的速度。
這樣,根據(jù)本實(shí)施方式的限制條件解決裝置300,由于構(gòu)成為包含函數(shù)定義保持單元9和函數(shù)定義執(zhí)行單元10,所以限制條件和由現(xiàn)有的編程定義的函數(shù)等融合,用戶側(cè)可以根據(jù)對象問題的性質(zhì)或特長,自由地切換作為限制條件的解決方法以及使用現(xiàn)有的編程方法的解決方法,同時進(jìn)行設(shè)定。由此,包含第一實(shí)施方式以及第二實(shí)施方式的限制條件解決裝置100、200中無法解決的逆運(yùn)算處理等的限制條件的記述變得格外容易。
(第四實(shí)施方式) 除了所述的第一實(shí)施方式~第三實(shí)施方式的限制條件解決裝置100、200、300的各構(gòu)成單元之外,本實(shí)施方式的限制條件解決裝置400的特征在于可以適當(dāng)利用來自數(shù)據(jù)庫或系統(tǒng)資源等的信息來設(shè)定變量值。
圖10表示本實(shí)施方式的限制條件解決裝置400的整體結(jié)構(gòu)圖。
為了簡化本實(shí)施方式的說明,通過對第二實(shí)施方式的限制條件解決裝置200進(jìn)行附加后的結(jié)構(gòu)的限制條件解決裝置400進(jìn)行說明。在其它的實(shí)施方式的限制條件解決裝置中,當(dāng)然可以利用來自數(shù)據(jù)庫或系統(tǒng)資源等的信息。
另外,對本實(shí)施方式的限制條件解決裝置400的結(jié)構(gòu)和第二實(shí)施方式中的限制條件解決裝置200共同的構(gòu)成部分標(biāo)以同一標(biāo)號,并省略詳細(xì)的說明。
如圖10所示,根據(jù)本實(shí)施方式的限制條件解決裝置400,限制條件內(nèi)的變量的一部分或全部可以將記錄在所述數(shù)據(jù)庫11或系統(tǒng)資源12內(nèi)的值、與時刻等其它的情況聯(lián)合的系統(tǒng)內(nèi)的變量連接,可以容易地進(jìn)行實(shí)現(xiàn)了本限制條件解決裝置400外的變量和限制條件的變量的匹配的變量的管理。
接著,作為限制條件的內(nèi)容,還表示了幾個可以處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的變量的例子。以下的具體例子在所述第一實(shí)施方式~第四實(shí)施方式中的限制條件解決裝置100、200、300、400中都可執(zhí)行。
(對變量定義了多個值的限制條件) 通常,對變量代入值的限制條件例如記述為x=10這樣,但定義對變量X代入多個值。具體來說,例如,允許 x={10、11、12}; 這樣的記述。在該情況下,變量之間的加減乘除運(yùn)算如果以加法運(yùn)算為例,則x+y為對各變量x,y的各個元素進(jìn)行+運(yùn)算。
(基于定義了運(yùn)算符的數(shù)組結(jié)構(gòu)的變量的限制條件) 現(xiàn)在考慮一維數(shù)組vec。將該一維數(shù)組vec設(shè)為vec={50,200,300},用vec[i]表示對于第i個(0≤i≤字符串長-1)的元素的訪問。一維數(shù)組vec的各元素為vec
=50、vec[1]=200、vec[2]=300。
這里,如下定義對于一維數(shù)組vec1、vec2的運(yùn)算符。
vec1+vec2...將各個一維數(shù)組的元素全部相加得到的數(shù)組, vec1-vec2...將各個一維數(shù)組的元素全部相減得到的數(shù)組, vec1*vec2...將各個一維數(shù)組的元素全部相乘得到的數(shù)組, vec1/vec2...將各個一維數(shù)組的元素全部相除得到的數(shù)組, vec1=vec2...各個一維數(shù)組的元素全部相同的數(shù)組比較或代入, vec1&vec2...將各個一維數(shù)組的元素全部連接得到的數(shù)組。
通過這樣定義對于一維數(shù)組的運(yùn)算符,可以與所述第一實(shí)施方式~第四實(shí)施方式中的限制式同樣地處理。
對于數(shù)組結(jié)構(gòu)的限制條件的訪問沒有限定,只要準(zhǔn)備例如圖21所示的運(yùn)算符即可。該運(yùn)算符可以使用任意的函數(shù)。
此外,為了對于所述一維數(shù)組vec的元素實(shí)現(xiàn)具有靈活性的訪問,在vec[i]中可以進(jìn)行范圍指定。具體來說,在假設(shè)vec[n..m,l..k,i..j]表示取出維數(shù)組的第n~m個、第l~k個,以及第i~j個元素而排出的數(shù)組時,可進(jìn)行 vec
=vec2
&vec2[4..5]+vec3
這樣的運(yùn)算,可以將一維數(shù)組作為限制式(限制條件)來處理。
例如,如果對所述一維數(shù)組(這里設(shè)為str)的各數(shù)組元素存儲字符,則str成為字符串??蛇M(jìn)行對于字符串str=“Hello World!”、向各str[i]代入任意的字符,或設(shè)為字符串1=“Hello”,字符串2=“World!”時,處理由字符串str=字符串1&字符串2所表示的限制式。進(jìn)而,通過可實(shí)現(xiàn)基于僅字符串的正規(guī)表現(xiàn)的模型匹配或字符串置換等,可以進(jìn)一步靈活地記述限制式。
應(yīng)用該情況,例如,可以如下記述通過輸出隨著變量值的變更而變化的Web的HTML(hypertext markup language,超鏈接標(biāo)記語言)輸出。
日期=“2003/01/01”; 姓名=“專利 太郎”; 內(nèi)容=“長篇文章”; HTML數(shù)據(jù)=“<HTML><BODY>”&日期
&“年”&日期[5..6]&“月”&日期[8..9]&“日”&“姓名”&姓名&“內(nèi)容”&內(nèi)容&“</BODY></HTML>”; (具有默認(rèn)變換規(guī)則的限制條件) 準(zhǔn)備對于任意的數(shù)據(jù)變換的變換規(guī)則,特別假設(shè)可通過默認(rèn)指定。
特別在從數(shù)值變換到字符串的情況下,有對每個參照每次使用變換函數(shù)的方法,但通過準(zhǔn)備數(shù)據(jù)變換規(guī)則的默認(rèn),可進(jìn)行有效的記述。
作為一例,準(zhǔn)備如下的規(guī)則。
·變換規(guī)則一定為向右對齊 ·S表示符號,僅在數(shù)為負(fù)的時候?yàn)橐?,在除此以外時為空白 ·Xn表示n位以下的數(shù) ·Yn表示n位固定的數(shù) ·Zn表示n位固定的消零 此時,例如在變量定義時,設(shè)為 float(”SX9.Y3”)vall; 時,作為帶有符號、尾數(shù)部9位以下、小數(shù)點(diǎn)、小數(shù)部3位固定、向右對齊的共14字符的字符串,可以參照vall。
此外,設(shè)為unsigned int(”Z8”)val2; 時,val2作為無符號、帶有消零8位的共8字符的字符串,可以參照val2。
當(dāng)然,在值參照時,通過直接記述為val2(”Z10”)等,不僅是默認(rèn)規(guī)則,在應(yīng)用時也可以應(yīng)用其它的規(guī)則。
通過定義具有這樣的默認(rèn)變換規(guī)則的限制條件的變換規(guī)則,可以簡單地記述事務(wù)處理(transaction)應(yīng)用等中的限制式。
對其它的數(shù)據(jù)結(jié)構(gòu)也同樣可以應(yīng)用,作為變換規(guī)則的格式,以上為一例,當(dāng)然存在多種格式。
(帶有優(yōu)先順序的限制條件) 以下表示對限制條件附加權(quán)重的情況下的記述例子。
{條件式}[優(yōu)先順序]; or {條件式}[優(yōu)先順序]→{條件式不成立時的處理}; 這里,在多個限制式條件一致的情況下,根據(jù)優(yōu)先順序的值選擇要執(zhí)行的限制式。此外,在存在多個相同優(yōu)先順序的值的情況下,全部執(zhí)行。通過定義這樣的帶有優(yōu)先順序的限制式,在僅執(zhí)行優(yōu)先順序最小或最大的限制式,或指定限制式的執(zhí)行順序的情況下有效。
(結(jié)構(gòu)體的限制條件) 結(jié)構(gòu)體(抽象的數(shù)據(jù)結(jié)構(gòu))可以集中處理多個數(shù)據(jù)類型。如果要用該結(jié)構(gòu)體來表現(xiàn)所述Web輸出的數(shù)據(jù),則可以表示為 struct結(jié)構(gòu)體名{ date日期; name姓名; string內(nèi)容; }告示板數(shù)據(jù)[];。實(shí)際的Web系統(tǒng)中,所述結(jié)構(gòu)體的數(shù)據(jù)存在于數(shù)據(jù)庫或文件上,在所述結(jié)構(gòu)體的情況下,對于與數(shù)組序號5有關(guān)的“內(nèi)容”的訪問,例如可通過“告示板數(shù)據(jù)[5].內(nèi)容”而實(shí)現(xiàn)。
另外,在本結(jié)構(gòu)體的數(shù)據(jù)的訪問中,通過定義對于成員(日期、姓名、內(nèi)容以及HTML數(shù)據(jù))的字符串匹配的運(yùn)算符等,可以將檢索的處理作為限制條件來進(jìn)行記述。
(內(nèi)建函數(shù)或追加運(yùn)算符、規(guī)則追加的限制條件) 進(jìn)而為了利用所述各種數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)示出了稍微實(shí)用的例題的圖12(a)以及圖12(b),追加幾個規(guī)則。另外,圖12(a)以及圖12(b)用一個圖表示,但為了方便表示為不同圖。
作為內(nèi)建函數(shù)或運(yùn)算符、規(guī)則,例如進(jìn)行如下準(zhǔn)備。
·visize(arg)...求由自變量arg提供的數(shù)組的大小的內(nèi)建函數(shù)。
·inttostr(arg)...將整數(shù)變換為字符串的內(nèi)建函數(shù)。
·strtrunc(arg1,arg2)...復(fù)制arg1的字符串,但在比arg2所指定的字符串長度長的情況下,舍掉該部分的字符。
·數(shù)組范圍指定運(yùn)算符[*]...表示所有數(shù)組的元素。
·將由{}包圍的幾個限制式作為塊來集中處理。
·[$i]...與目前為止出現(xiàn)的限制式的索引[i]相等,但在僅以塊集中的限制條件中都具有相同的值。這里,為了與通常的變量進(jìn)行識別,記述為$i而不是i。
根據(jù)上述,例如,可進(jìn)行如下的記述。
·output_block[*].output_html...表示將數(shù)組內(nèi)的所有的(參照圖12(a))排列而成的多個元素值串,在進(jìn)行與字符串的比較、代入運(yùn)算時,作為將所有的元素連接而成的一個字符串來處理, ·vsize(output_block)=list_count...是表示數(shù)組數(shù)、即數(shù)組大小和變量的關(guān)系的限制式。但是,由vsize()得到的值的參照為通常的數(shù)值,但變更需要表示數(shù)組大小的變更,因此在處理系統(tǒng)內(nèi)部定義為表示將值的變更抽象化而成的用于大小變更的函數(shù)調(diào)用,或者需要對象的方法(method)調(diào)用處理等的抽象化的處理。
為了提供對包含如上的各種數(shù)據(jù)結(jié)構(gòu)的限制條件的問題的輸入數(shù)據(jù),用戶直接變更相應(yīng)的變量,或進(jìn)行調(diào)用圖12(a)所示的過程型函數(shù)的bbs_additem()等的處理。此外,在圖12(a)、(b)的例題中,關(guān)于輸出參照所述output_html。通過以上的處理,可以實(shí)現(xiàn)Web服務(wù)。另外,不必將輸出一定限定為HTML格式,也可以用同樣的方法實(shí)現(xiàn)任意的客戶端/服務(wù)器系統(tǒng)中的服務(wù)器側(cè)的輸入輸出服務(wù)。
另外,到此為止,表示并說明了一維數(shù)組vec,而對二維數(shù)組等多維數(shù)組的擴(kuò)展當(dāng)然可以進(jìn)行,同樣也可以進(jìn)行數(shù)組長度不同的數(shù)組之間的運(yùn)算或與這樣的數(shù)組和數(shù)值的運(yùn)算有關(guān)的定義。
此外,如前所述,作為限制條件的內(nèi)容還表示了可以處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的變量的例子,但不必與這些數(shù)據(jù)結(jié)構(gòu)完全一致,只要是本領(lǐng)域技術(shù)人員可由此類推的變形例也當(dāng)然包括在內(nèi)。
如以上所說明的那樣,對于限制條件,可以處理各種數(shù)據(jù)結(jié)構(gòu)而不僅是單純的數(shù)值,所以當(dāng)前存儲的數(shù)據(jù)和HTML輸出的關(guān)系可通過限制條件(限制式)來記述,可以僅通過限制條件來簡單地記述Web應(yīng)用中的服務(wù)器側(cè)的程序。圖11表示與該Web服務(wù)器組合進(jìn)行數(shù)據(jù)輸入、顯示的系統(tǒng)的概念圖,圖12(a)、(b)表示此時的函數(shù)類型定義保持單元以及限制條件存儲單元中所存儲的信息或限制條件的一例。
此外,不限于如前所述的Web中的HTML,通過在如圖13所示的一般的窗口界面中構(gòu)成為將各項(xiàng)目與變量匹配,可以通過限制條件來記述數(shù)據(jù)和用戶界面的關(guān)系,容易記述一般的用戶界面,并且容易理解。由此,與現(xiàn)有的編程方式相比較,可以實(shí)現(xiàn)高的生產(chǎn)性。
<本發(fā)明的另一應(yīng)用例應(yīng)用程序構(gòu)建、事務(wù)處理> 接著,說明可對使用WEB上的輸入界面來構(gòu)建任意的應(yīng)用程序的問題,或檢索存儲了任意的數(shù)據(jù)的數(shù)據(jù)庫時的事務(wù)處理問題應(yīng)用本發(fā)明的情況。
在所述第一實(shí)施方式~第四實(shí)施方式中的限制條件解決裝置中,通過作為歷史信息(更新歷史)具有通過限制條件解決的處理步驟以及處理內(nèi)容,可以實(shí)現(xiàn)應(yīng)用上的用戶界面的概念之一的UNDO功能,或數(shù)據(jù)庫的事務(wù)處理。
通過可以實(shí)現(xiàn)該UNDO功能或數(shù)據(jù)庫的事務(wù)處理,可以容易地進(jìn)行如下的工作使得從數(shù)據(jù)的更新開始求伴隨數(shù)據(jù)變更的限制解的一系列的動作不被進(jìn)行。由此,可以可靠且迅速地進(jìn)行將限制條件的數(shù)據(jù)值變更一部分而發(fā)現(xiàn)輸入數(shù)據(jù)中包含的錯誤的輸入數(shù)據(jù)的確認(rèn)、或其取消時的用于恢復(fù)到原來的數(shù)據(jù)值的處理。
接著,表示可對使用了作為GUI環(huán)境中的基本畫面構(gòu)成元素的窗口的窗口系統(tǒng)或多窗口系統(tǒng)應(yīng)用本發(fā)明的情況。這里,以如圖14所示的窗口系統(tǒng)為一例進(jìn)行說明。另外,在圖14中示出了三個窗口,但當(dāng)然可以處理任意個窗口。
圖15是概念性地表示實(shí)現(xiàn)窗口系統(tǒng)的客戶端/服務(wù)器系統(tǒng)中的客戶端側(cè)的結(jié)構(gòu)的圖。關(guān)于服務(wù)器側(cè)的系統(tǒng)結(jié)構(gòu)與圖1、3、8、10所示的結(jié)構(gòu)同樣,所以省略。
如圖15所示,GUI客戶端具有GUI處理部和GUI控制部,GUI控制部控制如圖16所示的各部分的動作。
這里的GUI控制部的內(nèi)容具有與圖1、3、8、10同樣的結(jié)構(gòu),對對于客戶端內(nèi)的圖1、3、8、10的輸入輸出I/F的I/F控制部進(jìn)行各部分的狀態(tài)變更。作為限制條件,各部分間的聯(lián)合規(guī)則、應(yīng)由客戶端處理的輸入數(shù)據(jù)的匹配性檢查、輸入輔助、應(yīng)向服務(wù)器側(cè)傳遞的數(shù)據(jù)的加工規(guī)則等被記述、處理。
由GUI控制部加工并處理后的數(shù)據(jù)經(jīng)由傳遞用變量被傳遞到服務(wù)器。
當(dāng)然,可以集中以一臺處理客戶端的GUI處理部分和服務(wù)器的限制處理系統(tǒng)等,可以靈活地變形而使用系統(tǒng)結(jié)構(gòu)。
另外,除了作為客戶端/服務(wù)器系統(tǒng)的整體具有作為本發(fā)明的特征的與變量的值變更對應(yīng)的限制條件逐次解法的功能之外,在所述GUI控制部中也具有。此外,客戶端/服務(wù)器間的數(shù)據(jù)傳送也可以是獨(dú)立形式,但是也可以通過使用XML等,使用標(biāo)準(zhǔn)化后的數(shù)據(jù)形式來實(shí)現(xiàn)與現(xiàn)有方法具有互換性的開放的協(xié)議。
這樣,在GUI側(cè),可以基于限制條件的記述來進(jìn)行GUI的動作控制、傳遞的數(shù)據(jù)的匹配性的確認(rèn)、輸入輔助、與數(shù)據(jù)的狀態(tài)對應(yīng)的GUI的狀態(tài)變更、以及對服務(wù)器側(cè)的通知處理等。
接著,詳細(xì)說明窗口的動作。各窗口內(nèi)的構(gòu)建可通過能夠?qū)崿F(xiàn)許可所述各種數(shù)據(jù)結(jié)構(gòu)的處理的限制條件的設(shè)定或UNDO功能或數(shù)據(jù)庫的事務(wù)處理的用戶界面來實(shí)現(xiàn),該窗口本身的動作如下地記述。
作為窗口的信息,例如定義以下的結(jié)構(gòu)體。 struct{ 位置x,y; 大小x,y; 顯示中標(biāo)志; }窗口信息[]; 另外,設(shè)為窗口信息
...表示應(yīng)用1, 設(shè)為窗口信息[1]...表示應(yīng)用2, 設(shè)為窗口信息[2]...表示應(yīng)用3。
這些變量值的參照更新為與圖10的系統(tǒng)資源12同樣的處理,假設(shè)與實(shí)際的GUI系統(tǒng)的窗口聯(lián)動。
下面表示要用限制條件記述顯示在執(zhí)行應(yīng)用的畫面上的窗口的動作(顯示/不顯示、移動、大小變更)的情況的一例。
(a)窗口n的顯示/不顯示 在畫面上打開窗口(顯示)...窗口信息[n].顯示中標(biāo)志=true, 在畫面上關(guān)閉窗口(不顯示)...窗口信息[n].顯示中標(biāo)志=false, 此外,在畫面上有用于關(guān)閉窗口的‘close按鈕’時,例如設(shè)為窗口信息[n].顯示中標(biāo)志=!close按鈕的狀態(tài)(!是“非”運(yùn)算符)即可。
(b)窗口n的移動 窗口信息[n].位置.x=要移動的x大??; 窗口信息[n].位置.y=要移動的y大小; (c)窗口的大小變更 窗口信息[n].大小.x=要變更的x大??; 窗口信息[n].大小.y=要變更的y大??; 此外,為了使應(yīng)用2與應(yīng)用1的右邊鄰接,設(shè)為 窗口信息[1].位置.x=窗口信息
.位置.x+窗口信息[n].大小.x; 窗口信息[1].位置.y=窗口信息
.位置.y;即可。
此外,為了固定窗口的大小,對變量準(zhǔn)備可以/不可以變更的屬性的基礎(chǔ)上,將窗口信息[n].大小.x、窗口信息[n].大小.y設(shè)為不可變更即可。
這樣,在GUI環(huán)境中的窗口系統(tǒng)或多窗口系統(tǒng)中,相對于現(xiàn)有的編程方法中,發(fā)生事件時,對窗口的動作以及窗口內(nèi)的應(yīng)用動作,必需逐一記述依賴于該事件狀況的關(guān)聯(lián)動作,根據(jù)本發(fā)明的動作控制,可以基于簡單明了的限制條件,簡潔且容易地記述應(yīng)用的復(fù)雜的動作。
另外,在GUI環(huán)境中前述了可通過限制條件的記述來控制窗口系統(tǒng)中的動作的情況,但不僅用于對畫面上輸出數(shù)據(jù)的情況,對于使用窗口將處理過的內(nèi)容輸出到任意的介質(zhì)(例如,紙)上的輸出系統(tǒng)(例如,帳票印刷系統(tǒng))時,也可以應(yīng)用本發(fā)明,這一點(diǎn)只要是本發(fā)明的技術(shù)領(lǐng)域中的本領(lǐng)域技術(shù)人員就當(dāng)然可以容易地想到。
此外,在所述說明中,示出了客戶端/服務(wù)器系統(tǒng)中的具體例,但不必一定是客戶端/服務(wù)器系統(tǒng),也可以構(gòu)成為將客戶端和服務(wù)器分別構(gòu)建為不同的系統(tǒng),僅能在客戶端或服務(wù)器中進(jìn)行所述處理。
<本發(fā)明的其它的應(yīng)用例子構(gòu)建為并行化處理的計算機(jī)系統(tǒng)> 此外,本發(fā)明可以應(yīng)用于作為在過程型編程中麻煩的問題的并行化處理的問題。在并行處理中,大致分為考慮兩種動作。即,有幾個CPU執(zhí)行步驟S23~步驟S30的算法的方法,和如數(shù)據(jù)流裝置這樣用結(jié)構(gòu)體(architecture)來構(gòu)建變量和關(guān)系式的方法。
在前者的情況下,如果要用通常的過程型編程方法進(jìn)行并行處理,則在構(gòu)建算法的階段,用戶不得不一邊意識到CPU的并行動作,一邊分割編程的處理步驟來進(jìn)行記述。相對于此,在使用本發(fā)明的并行化處理的情況下,僅通過使從圖2的算法中的步驟S22的變量值的變更開始的步驟S23~步驟S30的處理并行動作,用于可以實(shí)現(xiàn)并行處理而不會直接意識到并行處理。
具體來說,所述第一實(shí)施方式~第四實(shí)施方式中的限制條件解決裝置中,在對于某一處理的步驟S23~步驟S30的執(zhí)行中,也進(jìn)行執(zhí)行關(guān)于其它的處理的步驟S22的變量值的變更的一系列的動作。
實(shí)際上,與現(xiàn)有的過程型編程方法中的并行算法的安裝同樣,在該并行處理的執(zhí)行中,需要在各變量間實(shí)現(xiàn)排他控制或同步控制,但可以直接應(yīng)用現(xiàn)有的過程型編程中的方法。
在后者的用結(jié)構(gòu)體來構(gòu)建變量和關(guān)系式的情況下,變量間的關(guān)系式例如為在并行計算機(jī)上物理地實(shí)現(xiàn)時的通信路徑。在該并行計算機(jī)上,并行處理器通過復(fù)雜的通信路徑連接,通信成本根據(jù)路徑而不同。通過用優(yōu)先級來表示該通信成本,可以自動地選擇數(shù)據(jù)路徑。關(guān)于優(yōu)先順序,可以使用作為限制條件的一例舉出的(帶有優(yōu)先順序的限制條件)。通過與這樣的并行處理同樣的方法,可以對一般構(gòu)建的系統(tǒng)整體應(yīng)用本發(fā)明。
另外,這里所說的系統(tǒng)表示多個特性不同的計算機(jī)或分用途專用機(jī)以及由將它們連接的網(wǎng)絡(luò)構(gòu)成的復(fù)合物,是指所有的一般的企業(yè)系統(tǒng)或社會系統(tǒng)。
換言之,在對系統(tǒng)整體應(yīng)用本發(fā)明的情況下,概念上與所述數(shù)據(jù)流裝置中的并行處理方法非常相似,通過本發(fā)明構(gòu)建的計算機(jī)經(jīng)由成為計算機(jī)間的界面的變量與作為其它的計算機(jī)的界面的變量連接。變量間的關(guān)系式是通信路徑,通信成本為優(yōu)先級,從而,通過本發(fā)明,可以設(shè)計并構(gòu)建所述系統(tǒng)整體。
<本發(fā)明的另一應(yīng)用例與現(xiàn)有編程語言的融合> 如至此說明的那樣,本發(fā)明處理以來自外部(用戶等)的指示(事件)為契機(jī)變更變量的值而通過限制傳播來解決由任意的限制條件構(gòu)筑的問題的事件驅(qū)動型的計算執(zhí)行原理。如前所述,從在函數(shù)定義保持單元或函數(shù)定義執(zhí)行單元中利用現(xiàn)有的過程型編程語言等可知,圖18中也示出,以可與現(xiàn)有的編程語言的組合為前提。因此,進(jìn)一步詳細(xì)敘述可將本發(fā)明融合到現(xiàn)有編程語言的情況。
另外,這里為了進(jìn)行說明,在將編程語言分類的情況下,大致分為一個是過程型編程,另一個是聲明式編程,但實(shí)際上存在更細(xì)致的編程語言的分類。即,相對于聲明式編程語言的非聲明式編程語言中包含過程型編程語言和作為數(shù)組的編程語言的函數(shù)型編程語言。以下,處理本發(fā)明和函數(shù)型編程語言的融合。
(A)與函數(shù)型編程語言的融合 這里,敘述與作為函數(shù)型編程語言最有歷史并可以稱作代表的LISP語言(Common LISP)的自然的融合方法?,F(xiàn)在,作為兩個變量a、b的初始值以及限制條件,定義 a={11,12,13} b={1,2,3} a[$i]=b[$i]+10。
a、b的值都是具有三個元素的數(shù)組。此外,在本發(fā)明的實(shí)施例中,新定義對限制式進(jìn)行定義的函數(shù)defconstraint,使對變量的代入與對符號的綁定對應(yīng)時,在LISP語言中大致可以如下記述。
(set’a#(11 12 13)) (set’a#(123)) (defconstraint’(=(arefa $i)(+(arefb $i)10))...(式18) 這里,函數(shù)defconstraint為了實(shí)現(xiàn)圖9的數(shù)據(jù)結(jié)構(gòu)而根據(jù)自變量建立與符號(變量)a和b有關(guān)的解決式,執(zhí)行 (defconstraint2’(=(arefa $i)(+(arefb $i)10)) ’(setf(arefa $i)(+(arefb $i)10)) ’(setf(arefb $i)(-(arefa $i)10))), 函數(shù)defconstraint2維持圖9的數(shù)據(jù)結(jié)構(gòu)。作為式的數(shù)據(jù)結(jié)構(gòu),可以是圖6等的數(shù)據(jù)結(jié)構(gòu),但由于在LISP中僅通過LISP本身的功能而可以自然地記述結(jié)構(gòu),所以在這里活用該LISP的特征來記述如上述的表達(dá)式。
對于C語言的指針等也涉及到同樣的問題,在LISP語言中,存在各數(shù)據(jù)被共享的可能性,變量和數(shù)據(jù)的關(guān)系不一定為一對一。因此,一般在變更某一數(shù)據(jù)時,其是否與特定的符號有關(guān)系與對變量代入值時是無關(guān)的。從而,這樣的變量和數(shù)據(jù)的關(guān)系結(jié)構(gòu)在實(shí)現(xiàn)本發(fā)明的限制消除時成為問題,下面對其進(jìn)行說明。
現(xiàn)在,圖22中示出將加上指示與符號b相同的數(shù)據(jù)的符號c,以符號a、b、c為中心的通常的LISP語言的內(nèi)部數(shù)據(jù)結(jié)構(gòu)極簡化后的一例。在LISP語言中,所有的符號被記錄在分組中,由于按姓名空間保存,所以這里根據(jù)分組來記述。此外,由于標(biāo)準(zhǔn)的姓名空間名是‘user’,因此符號a、b、c被登記在‘user’中,但在本例中,符號b也被登記在其它的分組中。
在LISP語言中執(zhí)行b[1]=12的情況下,執(zhí)行 (setf(arefb1)12), 但執(zhí)行值的代入的函數(shù)setf需要與由上述函數(shù)defconstraint2定義的限制式匹配。另一方面,被遞交給函數(shù)setf的數(shù)據(jù)在通常的LISP中為圖22中的(*)所表示的指針,不存在應(yīng)匹配的信息。因此,在這樣的簡單的例子的情況下,考慮了不僅在函數(shù)評價時傳遞評價結(jié)果,而且到函數(shù)setf的執(zhí)行時為止,傳遞所評價的表達(dá)式的信息的方法。但是,由于實(shí)際上為非常復(fù)雜的表達(dá)式,因此難以應(yīng)對傳遞的數(shù)據(jù)龐大的情況、由(setf(arefc1)12)變更了b[1]的情況。
為了解決該情況,將LISP語言的基本數(shù)據(jù)結(jié)構(gòu)構(gòu)成為向雙向追溯即可。作為一例在圖中表示該數(shù)據(jù)結(jié)構(gòu)時,如圖23所示。圖23中的(*)所表示的函數(shù)aref的數(shù)組參照不僅具有數(shù)組內(nèi)的指針而且具有數(shù)組本身的信息,以便向反向追溯。包含數(shù)組信息的所有的數(shù)據(jù)保存各種信息,以便追隨被賦值的符號的信息。
此外,實(shí)際上不僅僅追溯到符號而且必須追溯到已登記的分組信息,從而,限制式的符號需要考慮分組。在圖23中以粗線的箭頭表示從(*)追溯b[1](包含分組,userb[1])時的路徑。
另外,Common LISP的符號中原本具有主分組(home packge)的信息,但有時一個符號被保存在多個分組中。因此,需要追加可以追隨已登記的所有的分組的新的數(shù)據(jù)結(jié)構(gòu),這樣,在setf的執(zhí)行時,可以檢查限制式的匹配。如以上所說明的那樣,可以將本發(fā)明與以LISP語言為代表的函數(shù)型編程語言完全融合而自然地處理。
通過與所述(A)的函數(shù)型編程語言的融合,可以在LISP語言中應(yīng)用本發(fā)明,作為對函數(shù)型編程語言上的安裝是理想的,但例如在每次執(zhí)行setf等的代入操作時需要限制式的匹配,因此在原理上執(zhí)行效率惡化。特別在代入時的與反向的限制式的匹配(反向的匹配)時,如果不追溯到相當(dāng)靠上的一方,則不知道是否存在相應(yīng)的限制式的定義。例如,在指針的時刻知道的僅是[1]等的索引信息,但由于連簡單的限制式也構(gòu)成a[x]、b[x]這樣的結(jié)構(gòu),因此僅通過索引信息可以判斷是否存在應(yīng)匹配的限制條件的情況僅為已限定的特殊條件時。
相對于此,在從符號名(變量名)追溯的匹配的情況下,在多數(shù)的情況下,最初起知道是否存在限制條件,通過對變量(符號)本身附加這些信息而可以實(shí)現(xiàn)處理的高速化。
此外,實(shí)際的限制式出現(xiàn)a[x]等簡單的例子的情況較少,與反向的匹配通常需要對相當(dāng)復(fù)雜的表達(dá)式追溯到相當(dāng)靠上的一方,可能要完全追溯。考慮將其安裝到實(shí)際的Common LISP的復(fù)雜的分組機(jī)構(gòu)上的情況時,安裝實(shí)際變得復(fù)雜,對于執(zhí)行時間,即使考慮通過各種方法可以期待一些的改善的做法,與從變量開始的限制式的匹配相比,執(zhí)行效率明顯地惡化到不現(xiàn)實(shí)。
因此,作為現(xiàn)實(shí)的解決方法,在放棄完全的融合,使用限制條件的情況下,準(zhǔn)備專用的表達(dá)式處理機(jī)構(gòu),如果在其中加入一定僅能從變量(符號)來參照值的限制,則可以防止上述問題。例如,如將字符串?dāng)?shù)據(jù)用‘”’括起來表示這樣,將式數(shù)據(jù)抽象化為數(shù)據(jù)類型之一,例如用‘?’括起來表現(xiàn),定義執(zhí)行專用的表達(dá)式處理機(jī)構(gòu)的函數(shù)peval,在函數(shù)peval內(nèi)執(zhí)行代入式時,所述式(18)可以記述為 (peval’?a={11,12,13}?) (peval’?b={1,2,3}?) (defconstraint’?a[$i]=b[$i]+10?)。
然后,在執(zhí)行b[1]=12的情況下,執(zhí)行(peval’?b[1]=12)?)即可。
在該情況下,由于在式處理中一定僅能夠進(jìn)行從變量(記號)開始的參照,因此不需要反向的匹配,所以不發(fā)生所述(A)所敘述的LISP語言上的安裝的問題,進(jìn)而對LISP語言的其它功能完全沒有影響,因此解決了執(zhí)行效率的問題。
但是,作為編程語言,當(dāng)然是不自然的。因此,只要準(zhǔn)備新定義編程語言的語法本身而在代入操作時進(jìn)行解釋,以便自然地使用專用的表達(dá)式處理機(jī)構(gòu)的分析程序(句型分析器)即可。這由于在輸入時對語法進(jìn)行句型分析而置換為作為LISP的內(nèi)部表現(xiàn),所以與本來的LISP語言不同,但可以實(shí)現(xiàn)具有將LISP語言的優(yōu)點(diǎn)與本方式組合的執(zhí)行效率不顯著地降低的能力的編程語言。
另外,這里,敘述通過示出以式評價通常在peval函數(shù)中進(jìn)行為基本的、具有最主要的C語言習(xí)慣的語法的編程語言的基本元素,自然地使用peval函數(shù)的方法。觀察變換后可知,雖然具有C語言習(xí)慣的語法、可以進(jìn)行與C語言同樣的記述,但本質(zhì)上是LISP,具有LISP的靈活的記述能力的優(yōu)越性。進(jìn)而,也可以與純粹的LISP程序完全混合地執(zhí)行。
包含可稱作本系統(tǒng)的基本單位的函數(shù)的表達(dá)式的解釋執(zhí)行如下地進(jìn)行解譯。另外,這里關(guān)于類型聲明,本質(zhì)上沒有關(guān)系,因此省略。輸入 a[1]=func1(100);執(zhí)行函數(shù) (peval’?a[1]=func1(100)?) 具有作為C語言的基本結(jié)構(gòu)的局部變量的塊結(jié)構(gòu)如下地解釋。輸入 { int x,y; x=10; y=20; }執(zhí)行函數(shù) (let(x y) (peval’?x=10?)<!-- SIPO <DP n="33"> --><dp n="d33"/> (peval’?y=10?)) 包含全部C語言的大致的基本元素的、具有局部變量和循環(huán)結(jié)構(gòu)的函數(shù)如下地解釋。輸入 int f(int v) { int i,n=v; for(i=0;i<10;i++) n++; return n; }執(zhí)行函數(shù) (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))) 式的解釋和執(zhí)行方法考慮各種,這些變換方法僅為一例,但請注意關(guān)于變換方法可應(yīng)用已經(jīng)確立的各種編譯技術(shù)。這樣,可以設(shè)計自然地用函數(shù)peval置換執(zhí)行與限制式有關(guān)的表達(dá)式執(zhí)行的、將本發(fā)明和LISP的特征組合的非常強(qiáng)的編程語言。使用該語言,用與函數(shù)型語言融合后的強(qiáng)的編程語言記述圖12(a)、(b),從而本發(fā)明的圖3、圖8、圖10所示的限制條件解決裝置可以一邊網(wǎng)羅現(xiàn)存的過程型、函數(shù)型編程的功能,一邊不降低實(shí)際的執(zhí)行效率地執(zhí)行。此時,圖21所示的運(yùn)算符可由函數(shù)PEVAL內(nèi)的表達(dá)式處理實(shí)現(xiàn)。
<本發(fā)明的另一應(yīng)用例與設(shè)計方法的組合> 此外,本發(fā)明可與設(shè)計方法組合應(yīng)用。開發(fā)設(shè)計方法實(shí)際存在各種方法,但不管何種方法,其共同的概念為首先分析要實(shí)現(xiàn)的要求,接著決定為了實(shí)現(xiàn)要求而開發(fā)的目標(biāo)的規(guī)范,然后開發(fā)滿足該規(guī)范的程序。但是,在現(xiàn)有的過程型的編程方法的情況下,不論何種開發(fā)方法,最終都不得不將CPU的動作記述為程序代碼。另一方面,聲明式編程方法隱藏了解決該問題的可能性,但如開頭所述,計算機(jī)的執(zhí)行效率不好的問題嚴(yán)重。因此,雖說是當(dāng)前的一般的編程作業(yè),但多是指過程型編程方法。
而且,作為系統(tǒng)設(shè)計方法之一,具有數(shù)據(jù)中心指向。數(shù)據(jù)中心指向作為可以很好地設(shè)計業(yè)務(wù)系統(tǒng)的方法而已知,即使由此進(jìn)行了實(shí)現(xiàn)要求的系統(tǒng)設(shè)計,最終也需要編碼作業(yè),作為程序代碼不得不記述CPU的動作。關(guān)于CPU的動作的記述,即使在軟件學(xué)發(fā)達(dá)的當(dāng)今,在本質(zhì)上也依賴于程序員的經(jīng)驗(yàn)和感覺,現(xiàn)狀為人的創(chuàng)造性作業(yè)的領(lǐng)域內(nèi)存在的開發(fā)設(shè)計作業(yè)還很繁重。作為減輕開發(fā)設(shè)計作業(yè)的工具有CASE工具等。但是,它們即使可以減輕開發(fā)作業(yè),但關(guān)于無需由人來記述CPU的動作的工作的本質(zhì)性的問題仍然無法解決。
因此,在現(xiàn)有的方法中,對于所述本質(zhì)性問題的解決不是無視而是將重點(diǎn)置于再利用程序代碼上。例如,軟件的程序庫化或面向?qū)ο蟪绦蛘Z言將該再利用作為目的而進(jìn)行概念化來產(chǎn)生的。
相對于此,本發(fā)明盡管需要考慮計算機(jī)的動作,但完全不需要考慮如現(xiàn)有的復(fù)雜的動作。也就是說,程序員從直接記述作為各種設(shè)計方法中共同的問題的CPU的動作的作業(yè)中解放出來,不需要編碼時的創(chuàng)造性的工作。從而,根據(jù)本發(fā)明,作為CASE工具或與CASE工具類似的工具以及其它工具的發(fā)展形式,可以根據(jù)規(guī)范自動生成程序代碼,可以自動實(shí)現(xiàn)編程。
如果通過本發(fā)明設(shè)計開發(fā)系統(tǒng)整體而不是計算機(jī)單體,則也可以自動生成擴(kuò)大的系統(tǒng)整體。在該情況下,使用非常多的變量和關(guān)系式,但與現(xiàn)有的設(shè)計方法同樣,可以實(shí)現(xiàn)自上而下(top down)式設(shè)計方法或自下而上(bottom up)式設(shè)計方法,進(jìn)而當(dāng)然也可以進(jìn)行基于功能的區(qū)域分割,或再利用分割后的區(qū)域。此外,當(dāng)然對于任何的開發(fā)設(shè)計方法都可以共同地應(yīng)用本發(fā)明。
<本發(fā)明的另一應(yīng)用例對圖形數(shù)據(jù)或機(jī)器人的應(yīng)用> 作為本發(fā)明的又一應(yīng)用例,說明對計算機(jī)圖形的模型或機(jī)器人的關(guān)節(jié)等的可動部的應(yīng)用。這里,省略如機(jī)器人控制的精度的與本發(fā)明沒有直接關(guān)系的復(fù)雜的問題,僅說明所連接的關(guān)節(jié)的處理。
現(xiàn)在,假設(shè)被連接的點(diǎn)a、e之間有四個關(guān)節(jié)A、B、C、D,如果將關(guān)節(jié)AB間的位置設(shè)為b,將關(guān)節(jié)BC間的位置設(shè)為c,關(guān)節(jié)CD間的位置設(shè)為d,則a~e間的關(guān)系可以由這5個點(diǎn)來表現(xiàn)。在各點(diǎn)由具有(x,y,z)的三個坐標(biāo)的矢量表示的三維的情況下,各關(guān)節(jié)的旋轉(zhuǎn)運(yùn)動以3×3的旋轉(zhuǎn)矩陣表示。另外,也可以對該旋轉(zhuǎn)矩陣再加入并行移動成分而設(shè)為4×4矩陣。
為了將本問題簡化,用限制式表示省略了各點(diǎn)間的長度等的僅為單純的旋轉(zhuǎn)時,成為 b=a*A ...(a) c=b*B ...(b) d=c*C ...(c) e=d*D ...(d)。
這里,A、B、C、D表示對應(yīng)的關(guān)節(jié)的旋轉(zhuǎn)矩陣。
通常,由于關(guān)節(jié)的移動范圍有限制,因此各旋轉(zhuǎn)矩陣A~D的值也有限制,用戶用限制式來記述該限制。如果,在a被固定而關(guān)節(jié)B變化的情況下,需要執(zhí)行所述(b)→(c)→(d)順序的限制傳播。此外,如果在相對于被固定的a存在想要移動的位置e的情況下,通過該限制傳播,僅校正各旋轉(zhuǎn)矩陣D、C、B、A的必要的旋轉(zhuǎn)成分而自動地決定。這里,通過追加表示被固定為限制條件的變量,或者使系統(tǒng)的變量或關(guān)系式作為屬性具有等來實(shí)現(xiàn)a被固定的情況。因此,將旋轉(zhuǎn)矩陣A~D設(shè)為分別控制關(guān)節(jié)的電機(jī)等的角度時,這可以應(yīng)用于機(jī)器人控制。此外,如果對三維坐標(biāo)a~e進(jìn)行透視變換而繪制到顯示設(shè)備等,則這與應(yīng)用到計算機(jī)圖形的情況完全相同。
在對這樣的機(jī)器人的關(guān)節(jié)等的可動部應(yīng)用本發(fā)明的情況下,在現(xiàn)實(shí)中更復(fù)雜,但既便如此,與基于過程型編程方法的實(shí)現(xiàn)相比,可以用格外簡單且自然的形式來實(shí)現(xiàn)。另外,對計算機(jī)的關(guān)節(jié)等的可動部的應(yīng)用例子僅為一例,當(dāng)然可以很好地解決與關(guān)節(jié)類似的任意的問題。
<本發(fā)明的另一應(yīng)用例對化學(xué)領(lǐng)域、物理領(lǐng)域、仿真領(lǐng)域的應(yīng)用> 此外,作為本發(fā)明的又一應(yīng)用例,說明對化學(xué)領(lǐng)域的應(yīng)用。
在處理化學(xué)式時考慮各種模型化,但這里為了說明而進(jìn)行簡化,僅說明與本發(fā)明直接關(guān)聯(lián)的內(nèi)容。
為了將化學(xué)式中的各元素作為對象來處理,按元素的種類定義為類,根據(jù)需要將要使用的元素實(shí)例化。各元素對象作為限制條件具有與其它元素的結(jié)合條件或元素的性質(zhì)。此外,元素的組合由化合物對象管理,通過將元素對象登記到化合物對象來表示。在化合物對象內(nèi),利用限制式具有組合時的性質(zhì)或組合條件。通過這樣構(gòu)成,用戶可以自由地變更對象的組合,但另一方面,通過限制條件禁止不可能的組合,然后在元素的變更成功時,據(jù)此可知化合物的性質(zhì)也被變更。此外,在此時,例如,如果在元素對象內(nèi)具有電子的狀態(tài)作為變量(屬性),則發(fā)生與電子變量有關(guān)的限制傳播,可以表示作為物理現(xiàn)象的電子的行為。
如以上所說明的那樣,本發(fā)明可以高效率地表示化學(xué)現(xiàn)象或物理現(xiàn)象等,這是某一狀況的模型化和對于情況的發(fā)生的現(xiàn)象的仿真,對于變量值的變更的限制消除及其本身成為特定的現(xiàn)象本身。另外,不限于化學(xué)現(xiàn)象或物理現(xiàn)象,在多個仿真領(lǐng)域當(dāng)然都可以有效地使用本方式。
<本發(fā)明的另一應(yīng)用例對線性規(guī)劃法(簡化法等)的應(yīng)用> 此外,根據(jù)此前的說明,本發(fā)明典型地在簡化法等線性規(guī)劃法、整數(shù)規(guī)劃法、傳送問題等中所記載的限制條件中,如果是用戶可以輸入考慮了與對象問題有關(guān)的限制傳播的處理步驟的限制條件的情況則可以應(yīng)用,這一點(diǎn)只要是本領(lǐng)域技術(shù)人員就應(yīng)該明白。
<本發(fā)明的另一應(yīng)用例對神經(jīng)網(wǎng)絡(luò)的應(yīng)用> 神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元模型可以將閾值作為變量、由限制式來記述。以該觀點(diǎn)來看,神經(jīng)網(wǎng)絡(luò)的神經(jīng)元模型的結(jié)合是由本方式處理的限制式關(guān)系的特殊形式,可以視作子集。
在神經(jīng)網(wǎng)絡(luò)中,將為了得到要求的結(jié)果而決定網(wǎng)絡(luò)內(nèi)的各神經(jīng)元模型的閾值稱作學(xué)習(xí),而在該學(xué)習(xí)中,課題是如何設(shè)定用于得到希望的結(jié)果的閾值。而且,若說該學(xué)習(xí)方法,其概念上接近相對于本方式的現(xiàn)有的限制編程。但是,神經(jīng)元模型的閾值的設(shè)定是設(shè)定變量的值的作業(yè),不能視為通過在本發(fā)明中敘述的方式進(jìn)行的編程。從而,可以將本發(fā)明應(yīng)用到神經(jīng)網(wǎng)絡(luò)。即,根據(jù)本發(fā)明,不僅自動調(diào)整值,也可以實(shí)現(xiàn)考慮動作而設(shè)定一部分或全部的閾值的學(xué)習(xí)方法。
另外,所述內(nèi)容僅為用于說明本發(fā)明的技術(shù)思想的一例,不限于此,在實(shí)現(xiàn)本發(fā)明的技術(shù)思想時,即使具有本發(fā)明的技術(shù)領(lǐng)域中的通常知識的人追加、變更限制條件解決裝置的各結(jié)構(gòu)或限制條件的定義方法,本發(fā)明的根本的技術(shù)思想也不變,這是顯然的。
此外,本發(fā)明的目的當(dāng)然也可以通過下述方式來達(dá)成將存儲了實(shí)現(xiàn)所述實(shí)施方式的限制條件解決裝置100、200、300、400的功能的軟件的程序代碼的存儲介質(zhì)提供給系統(tǒng)或裝置,該系統(tǒng)或裝置的計算機(jī)(或CPU或MPU)讀出存儲在存儲介質(zhì)中的程序代碼并執(zhí)行。
該情況下,從存儲介質(zhì)讀出的程序代碼本身實(shí)現(xiàn)本實(shí)施方式的功能,存儲了該程序代碼的存儲介質(zhì)以及該程序代碼構(gòu)成本發(fā)明。作為用于供給程序代碼的存儲介質(zhì),可以使用ROM、軟盤、硬盤、光盤、光磁盤、CD-ROM、CD-R、磁帶、非易失性存儲卡等。
此外,通過計算機(jī)執(zhí)行讀出的程序代碼,不僅可以實(shí)現(xiàn)上述實(shí)施方式的功能,而且基于該程序代碼的指示,在計算機(jī)上運(yùn)轉(zhuǎn)的操作系統(tǒng)等進(jìn)行實(shí)際處理的一部分或全部,通過該處理實(shí)現(xiàn)本實(shí)施方式的功能的情況當(dāng)然也包含在內(nèi)。
權(quán)利要求
1.一種限制條件解決方法,其特征在于,
包括
限制條件輸入處理,由用戶輸入考慮了與對象問題有關(guān)的限制傳播的處理步驟的限制條件;
變量值設(shè)定處理,設(shè)定通過所述限制條件輸入處理輸入的限制條件所使用的變量的初始值或變動值;
限制條件提取處理,從通過所述限制條件輸入處理輸入的限制條件中提取與通過所述變量值設(shè)定處理設(shè)定的值有關(guān)的限制條件;
限制條件解計算處理,基于由所述用戶考慮到的限制傳播的處理步驟,對通過所述限制條件提取處理提取出的所有限制條件代入所述變量的初始值或變動值,計算該限制條件的解;以及
變量值再設(shè)定處理,將通過所述限制條件解計算處理計算出的解設(shè)定為所述變量值設(shè)定處理中的新的變動值,其中,
所述變量值再設(shè)定處理中存在再設(shè)定的新的變動值的期間,反復(fù)進(jìn)行所述限制條件提取處理以及所述限制條件解計算處理。
2.如權(quán)利要求1所述的限制條件解決方法,其特征在于,
還包括
限制條件存儲處理,存儲通過所述限制條件輸入處理輸入的限制條件;以及
變量值存儲處理,存儲通過所述變量值設(shè)定處理輸入的變量的值,其中,
由所述用戶進(jìn)行所述限制條件或所述變量值的追加、變更、刪除時,所述限制條件提取處理與通過所述限制條件存儲處理或所述變量值存儲處理存儲的限制條件或變量值進(jìn)行比較,僅提取產(chǎn)生了不同的限制條件。
3.如權(quán)利要求1或2所述的限制條件解決方法,其特征在于,還包括
函數(shù)類型定義保持處理,可以設(shè)定過程型或函數(shù)型的算法;以及
函數(shù)類型定義執(zhí)行處理,可以基于通過所述函數(shù)類型定義保持處理設(shè)定的算法,按照過程型或函數(shù)型來解決所述對象問題。
4.如權(quán)利要求1~3中的任何一項(xiàng)所述的限制條件解決方法,其特征在于,通過所述變量值設(shè)定處理以及所述變量值再設(shè)定處理設(shè)定的變量不僅包括數(shù)值,而且包括下述的至少任何一種字符、字符串、抽象的數(shù)據(jù)結(jié)構(gòu)、包含內(nèi)建函數(shù)的數(shù)據(jù)、以及對象型數(shù)據(jù)結(jié)構(gòu)。
5.如權(quán)利要求1~4中的任何一項(xiàng)所述的限制條件解決方法,其特征在于,
所述對象問題是使用WEB上的輸入界面來構(gòu)建任意的應(yīng)用程序的問題、或檢索存儲了任意的數(shù)據(jù)的數(shù)據(jù)庫時的事務(wù)處理問題,
該方法包括歷史保持處理,將通過所述限制條件解決所述對象問題的處理步驟以及處理內(nèi)容作為歷史信息保持。
6.如權(quán)利要求5所述的限制條件解決方法,其特征在于,在使用了作為GUI環(huán)境中的基本畫面構(gòu)成元素的窗口的窗口系統(tǒng)或多窗口系統(tǒng)、或者使用所述GUI環(huán)境中的窗口輸出處理過的內(nèi)容的輸出系統(tǒng)中,進(jìn)行所述應(yīng)用程序的構(gòu)建處理。
7.一種限制條件解決方法,包括
限制條件輸入處理,輸入限制條件;
變量值設(shè)定處理,設(shè)定通過所述限制條件輸入處理輸入的限制條件所使用的變量的值;
限制條件提取處理,從通過所述限制條件輸入處理輸入的限制條件中提取與通過所述變量值設(shè)定處理設(shè)定的值有關(guān)的限制條件;以及
限制條件解計算處理,計算通過所述限制條件提取處理提取出的限制條件的解,其特征在于,
所述限制條件至少由下述情況中的任何一種構(gòu)成包含當(dāng)前的數(shù)組元素數(shù)、使所述變量持有多個值、包含基于結(jié)構(gòu)體數(shù)組的元素值的檢索、以及基于默認(rèn)規(guī)則的字符串?dāng)?shù)值變換。
8.一種限制條件解決裝置,其特征在于,
包括
限制條件輸入單元,其由用戶輸入考慮了與對象問題有關(guān)的限制傳播的處理步驟的限制條件;
變量值設(shè)定單元,其設(shè)定由所述限制條件輸入單元輸入的限制條件所使用的變量的初始值或變動值;
限制條件提取單元,其從由所述限制條件輸入單元輸入的限制條件中提取與由所述變量值設(shè)定單元設(shè)定的值有關(guān)的限制條件;
限制條件解計算單元,其基于由所述用戶考慮到的限制傳播的處理步驟,對由所述限制條件提取單元提取出的所有限制條件代入所述變量的初始值或變動值,計算該限制條件的解;以及
變量值再設(shè)定單元,其將由所述限制條件解計算單元計算出的解設(shè)定為所述變量值設(shè)定單元中的新的變動值,其中,
所述變量值再設(shè)定單元產(chǎn)生再設(shè)定的新的變動值的期間,由所述限制條件提取單元以及所述限制條件解計算單元反復(fù)進(jìn)行。
9.如權(quán)利要求8所述的限制條件解決裝置,其特征在于,
還包括
限制條件存儲單元,其存儲由所述限制條件輸入單元輸入的限制條件;以及
變量值存儲單元,其存儲由所述變量值設(shè)定單元輸入的變量的值,其中,
由所述用戶進(jìn)行所述限制條件或所述變量值的追加、變更、刪除時,所述限制條件提取單元與由所述限制條件存儲單元或所述變量值存儲單元存儲的限制條件或變量值進(jìn)行比較,僅提取產(chǎn)生了不同的限制條件。
10.如權(quán)利要求8或9所述的限制條件解決裝置,其特征在于,還包括
函數(shù)類型定義保持單元,其可以設(shè)定過程型或函數(shù)型的算法;以及
函數(shù)類型定義執(zhí)行單元,其基于由所述函數(shù)類型定義保持單元設(shè)定的算法,按照過程型或函數(shù)型來解決所述對象問題。
11.如權(quán)利要求8~10中的任何一項(xiàng)所述的限制條件解決裝置,其特征在于,由所述變量值設(shè)定單元以及所述變量值再設(shè)定單元設(shè)定的變量不僅包括數(shù)值,而且包括下述的至少任何一種字符、字符串、抽象的數(shù)據(jù)結(jié)構(gòu)、包含內(nèi)建函數(shù)的數(shù)據(jù)、以及對象型數(shù)據(jù)結(jié)構(gòu)。
12.如權(quán)利要求8~11中的任何一項(xiàng)所述的限制條件解決裝置,其特征在于,
所述對象問題是使用WEB上的輸入界面來構(gòu)建任意的應(yīng)用程序的問題、或檢索存儲了任意的數(shù)據(jù)的數(shù)據(jù)庫時的事務(wù)處理問題,
該裝置包括歷史保持單元,其將通過所述限制條件解決所述對象問題的處理步驟以及處理內(nèi)容作為歷史信息保持。
13.如權(quán)利要求12所述的限制條件解決裝置,其特征在于,在使用了作為GUI環(huán)境中的基本畫面構(gòu)成元素的窗口的窗口系統(tǒng)或多窗口系統(tǒng)、或者使用所述GUI環(huán)境中的窗口輸出處理過的內(nèi)容的輸出系統(tǒng)中,進(jìn)行所述應(yīng)用程序的構(gòu)建處理。
14.一種限制條件解決裝置,包括
限制條件輸入單元,其輸入限制條件;
變量值設(shè)定單元,其設(shè)定由所述限制條件輸入單元輸入的限制條件所使用的變量的值;
限制條件提取單元,其從由所述限制條件輸入單元輸入的限制條件中提取與由所述變量值設(shè)定單元設(shè)定的值有關(guān)的限制條件;以及
限制條件解計算單元,其計算由所述限制條件提取單元提取出的限制條件的解,其特征在于,
所述限制條件至少由下述情況中的任何一種構(gòu)成包含當(dāng)前的數(shù)組元素數(shù)、使所述變量持有多個值、包含基于結(jié)構(gòu)體數(shù)組的元素值的檢索、以及基于默認(rèn)規(guī)則的字符串?dāng)?shù)值變換。
15.一種限制條件解決系統(tǒng),可互相通信地連接了多個設(shè)備,其特征在于,
上述設(shè)備中至少一個設(shè)備具有權(quán)利要求8~14中的任何一項(xiàng)所述的限制條件解決裝置的功能。
全文摘要
本發(fā)明的目的在于不記述作為計算機(jī)上的數(shù)據(jù)處理步驟的算法,用少的計算時間可靠地解決對象問題。作為解決手段,構(gòu)成為由變量值設(shè)定單元(2)設(shè)定了與對象問題有關(guān)的限制條件以及該限制條件所使用的變量的初始值或變動值時,重復(fù)進(jìn)行以下工作限制條件提取單元(3)提取與該變量相關(guān)聯(lián)的限制條件,限制條件解計算單元(4)依次求每個限制條件的解,變量值再設(shè)定單元(5)將該求出的解作為新的變量值來求各限制條件的解,所以求解的條理變得明確,同時對格外簡化后的各限制條件進(jìn)行求解即可,因此可以可靠地到達(dá)最終的解,由此,可以使運(yùn)算處理格外地高速化。
文檔編號G06N5/00GK1910601SQ20058000299
公開日2007年2月7日 申請日期2005年1月21日 優(yōu)先權(quán)日2004年1月21日
發(fā)明者福井利夫 申請人:株式會社麥塔羅技克