第一篇:Prolog概述
Visual Prolog智能集成開發環境評述
雷英杰
邢清華
孫金萍
張 雷
(空軍工程大學導彈學院 陜西三原
713800)
摘 要:Visual Prolog是國際上已經廣泛流行的功能強大的通用智能化應用集成開發環境。本文全面評述其功能特點,包括Visual Prolog的由來與發展、可視化開發環境、可視化編程接口、語言與編譯器、運行環境等。
關鍵詞:Visual Prolog;人工智能;邏輯程序設計;開發環境
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3516(2002)05——
Overview of Visual Prolog Intelligent Integrated Development Environment LEI Ying-jie, XING Qing-hua, SUN Jin-ping, ZHANG Lei(The Missile Institute of Air Force Engineering University, Sanyuan Shaanxi, 713800, China)
Abstract Visual Prolog has already become a widely used AI programming language in logic and international developing tools and environment, which is a powerful, general-purpose, intelligent and integrated visual studio.All aspects of Visual Prolog are presented in this paper, such as how it derives and evolves, and its visual programming environment, visual programming interfaces, the features of programming language and compiler, running environment and so on.Keywords: Visual Prolog;Artificial Intelligence;Programming in Logic;Development Environment
智能化是當前計算機、自動化、通信、管理等信息科學技術領域中的新方法、新技術、新產品的重要發展方向與開發策略之一。信息處理的智能化與信息社會對智能的巨大需求是人工智能發展的強大動力。人工智能研究曾取得過許多令人注目的成果,也走過不少彎路,經歷過不少挫折。近幾年來,隨著計算機與網絡通信技術的迅猛發展,特別是因特網的大規模普及,人工智能的研究再度活躍起來,并正向更為廣闊的領域發展。圍繞智能化應用系統的研究和開發也迎來一個蓬勃發展的新時期。因此,引進與消化國際上已經廣泛流行的功能強大和通用的智能程序設計語言、工具與環境,對于我國開發智能應用系統十分必要。有鑒于此,本文全面介紹和評述Visual Prolog的功能特點,希望對我國在這一領域從事教學、研究及應用開發的同行有所啟迪。
1.Visual Prolog的由來與發展
Prolog語言是人工智能與專家系統領域最著名的邏輯程序設計語言。Visual Prolog意指可視化邏輯程序設計語言,是基于Prolog語言的可視化集成開發環境,是Prolog開發中心(PDC)最新推出的基于Windows環境的智能化編程工具,其語言特性符合相應的國際標準ISO/IEC 13211-1:1995。目前,Visual Prolog在美國、西歐、日本、加拿大、澳大利亞等發達國家和地區十分流行,是國際上研究和開發智能化應用的主流工具之一。預計短時期內,在國際上已經十分流行的最新版本的可視化邏輯程序設計語言Visual Prolog將會在我國廣泛流行開來,并將迅速成為我國研究和開發智能化應用的最重要的工具。
Visual Prolog具有模式匹配、遞歸、回溯、對象機制、事實數據庫和謂詞庫等強大功能[1]。它包含構建大型應用程序所需要的一切特性:圖形開發環境、編譯器、連接器和調試器,支持模塊化和面向對象程序設計,支持系統級編程、文件操作、字符串處理、位級運算、算術與邏輯運算,以及與其它編程語言的接口。Visual Prolog包含一個大型庫,捆綁了范圍廣闊的API函數:包括Windows GUI函數族、ODBC/OCI數據庫函數族和Internet函數族(socket、ftp、http、CGI等)。這個開發環境全部使用Visual Prolog語言寫成,而且包含對話框、菜單、工具欄等若干編碼專家和圖形編輯器。Visual Prolog支持Windows 98/Me/NT/2000/XP、OS/2及文本方式下的Linux和SCO UNIX。Visual Prolog非常適合于專家系統、規劃和其它AI相關問題的求解,是智能程序設計語言中具有代表性且應用較多的一種程序設計語言。由于這種語言很適合表達人的思維和推理規則,在自然語言理解、機器定理證明、專家系統等方面得到了廣泛的應用,在智能程序設計語言中占有相當重要的地位。
Prolog是全世界計算機科學家多年來研究工作的結晶。Prolog的第一個正式版本由法國馬賽大學Alain Colmerauer于70年代作為一種邏輯程序設計工具研制。其結果是誕生了一種遠比當今Pascal和C這樣著名的編程語言功能更加強大的語言。一個特定應用的Prolog程序典型情況下只需要對應C++程序的十分之一程序行。
今天,Prolog是人工智能應用編程和專家系統開發的一個非常重要的工具。更多的“用戶友好性”和智能化程序的要求是使Prolog流行起來的另一個原因。但Prolog最重要的好處是非常公平地適用于任何應用領域:通過讓程序員建立對象和進程之間的邏輯關系,復雜問題更容易從本質上求解,而且產生的程序在其生命周期更容易維護。定制知識庫、專家系統、自然語言接口和智能信息管理系統這些應用都是當前使用Visual Prolog進行程序設計的領域范圍[3]。
Prolog已經走出了人工智能實驗室,PDC的Visual Prolog是一個商業上富有競爭的通用開發環境。Visual Prolog因其容易增加程序甚至網站的智能化特性而日益變成許多開發者選擇的工具。
Prolog是一種眾所周知的說明性語言。這就是說,給出所需要的事實和規則,Prolog將使用演繹推理求解編程問題。這與傳統的過程性編程語言如C、BASIC和Pascal等形成了鮮明的對照。在過程性語言中,程序員必須提供一步一步的指令,準確地告訴計算機如何求解給定的問題。換句話說,程序員必須預先知道如何求解這個問題。相反,Prolog程序員只需要提供對問題的描述和求解的基本規則。然后,Prolog系統本身將確定如何找到一個解。
由于這種說明性(而不是過程性)方法,眾所周知的錯誤來源,諸如循環操作次數多一次或少一次這樣的錯誤,一開始就被排除了。Prolog鼓勵程序員從結構良好的問題描述開始,因而實際上,Prolog也可以被用作指定產品的規格說明工具和實現工具。
Visual Prolog是PDC Prolog和Turbo Prolog的后繼產品。在微機上,Visual Prolog是基于Windows環境的,而早期的PDC Prolog和Turbo Prolog是基于DOS環境的。Visual Prolog特別適合于處理知識和知識問題求解,是優秀的智能化應用開發工具。同時它與SQL數據庫系統、C++開發系統和其它語言工具如Visual Basic、Borland的Delphi或IBM的Visual Age一樣,都致力于同樣的目標,已經成為適合于任何應用領域的通用開發工具。當今有一些組織趨向于用數據庫技術來求解一切問題,但這種途徑常常在開發時間和最終系統的性能兩方面導致壞的結果。用Prolog開發的應用程序具有更優越的性能和用戶友好性、更短的開發時間。PDC的Visual Prolog特別適用于這些傳統類型的數據庫任務,因為Visual Prolog具有的編程能力之一就是十分易于使用的數據庫引擎。Visual Prolog由于高度優化的編譯器,創建的程序非常快,幾乎與基于C++的應用程序一樣快。
Web編程支持和對象機制這兩種功能是對Visual Prolog商用有效性的巨大貢獻。對象機制本身就是一種非常強大的建模工具,幾乎已經成了Pascal、C++、Smalltalk等語言的一種事實上的標準。Web編程支持是一個重要的新特性。譬如,用Visual Prolog寫的專家系統,可以被連接到Web頁,在支持部門、網上貿易和其它一些基于Web技術的開發等方面將發揮重要作用。
2.可視化開發環境
Visual Prolog的可視化開發環境(VDE)[4]把編譯器與編輯器、資源工具箱、資源和應用程序專家、交互式建造工具和各種瀏覽工具等結合在一起。
在交互式、可視化地創建用戶接口部件之后,就自動生成了一個運行原型。應用程序專家為一個項目創建所需要的全部文件,資源專家知道如何生成Prolog代碼,以支持所選擇的全部資源。
設計VDE是為了使開發應用程序更加容易、方便和快捷,這些應用程序是基于每一個本地操作系統提供標準接口的高級抽象。功能上相同的可視化開發環境可以運行在所有的Windows平臺上。
編碼專家(Code Expert)創建并維護Prolog的控件資源代碼。Visual Prolog最大的強項可能是把布局設計工具(Layout)和編碼專家結合在一起。編碼專家完成大部分工作,就是說,你可以在幾分鐘之內創建一個應用程序,然后從這個原型逐漸增強到最終的應用程序。
應用程序專家(Application Expert)能生成一個新項目,或對一個現有項目進行配置。它說明操作系統、用戶接口策略、C編譯器、伴隨工具等數千種組合情形。當生成一個新項目時,它將自動建立所有的基本工具,如幫助文件、工具欄、菜單等。
資源編輯器包含一組工具,這些工具使得以交互方式可視化地設計和修改用戶接口成為可能。可以直接使用鼠標安排控件在對話框或窗口中的布局,設置訪問屬性。資源由窗口、對話框、位圖、圖標、光標和字符串等組成,它們是任何使用GUI的應用程序都需要的。Visual Prolog具有很強的引入資源的能力。資源可以從DLL、應用程序、RES文件及其它Visual Prolog項目引入。
Visual Prolog包含一個語言敏感的文本編輯器,它具有現代開發環境中能找到的所有特性。例如編輯器強大的源代碼控制功能,可以使Visual Prolog的關鍵字和其它語言元素的代碼有不同的顏色。這些顏色能使謂詞名、參數、注釋等之間的差別更易于區分。例如,整型常數可以分配以紅色顯示。編輯器支持不受限制的撤消與重做設施、搜索與替換、剪切、拷貝、粘貼、快速拖放移動塊,甚至嵌入超文本鏈接。此外,與以前的PDC編輯器一樣,程序員能夠把這個編輯器功能包括在自己的應用程序中。這個編輯器用在VDE中的獨有特色是它知道Visual Prolog的所有謂詞、用戶接口部件、顏色、常量等。所有這些特性都可以容易地用鼠標粘貼到源代碼。
VDE包含有幫助生成器。內置的幫助創作系統使得很容易給出應用程序的聯機幫助。這個幫助系統是基于PDC的超文本抽象機(HAM)的。在幫助創作系統中,有可能在設計階段交互式地輸入文本,用鼠標標記新的鏈接,跟隨現有的鏈接。幫助系統能夠輸出Windows的.RTF格式,所以它可以生成本地的Windows幫助系統。Help編譯器(如HCW.EXE)不包括在Visual Prolog中,但可以在Visual C++和Borland C++產品中找到。也可以在ftp.microsoft.com站點下載一個最新版本的Windows幫助編譯器。
Visual Prolog編譯器為源代碼瀏覽器產生信息,所以,檢查模塊中的謂詞、瀏覽項目中所有全局謂詞,或者查找任何謂詞、論域聲明或定義的位置,都是可能的。
Visual Prolog也可以使用源代碼控制系統,如Visual SourceSafe、PVCS和MKS,因而很容易在幾個項目之間共享源代碼,也允許多個程序員從事同一項目。
Visual Prolog的聯機幫助設施提供一個完全的VDE操作指南和完整的基本Prolog語言及可視化編程方面擴展的參考信息。當Prolog程序較大時,你就會發現Visual Prolog的調試器是一個不可缺少的工具。調試器對編譯出來的代碼進行工作,允許設置斷點和單步執行代碼。當單步執行代碼時,可以檢查變量的值及尚待證實的事實的內容。
Make工具處理編譯、連接、資源編輯和資源綁定等所有的復雜性工作。Make工具檢查時間郵戳,每次只編譯所需要的文件。為了顯示項目的結構,可以把項目中的依賴關系顯示成一個樹。
在Visual Prolog專業版本中有一個VDESRC子目錄,在這個子目錄中可以找到可視化開發環境的全部源代碼。有了它,就可以任意定制所期望的VDE,或者研究在程序中如何實現這些功能、適當的工具和技術。用來安裝Visual Prolog的安裝程序本身是用Visual Prolog寫成的,其核心源代碼包含在磁盤上。它能被修改而創建你自己應用程序的安裝程序。
3.Visual Prolog語言與編譯器
Visual Prolog的編譯器產生緊湊的本地代碼,足以與Pascal和C編譯器所生成的代碼媲美。編譯器執行幾種不同的分析,范圍從全局流程分析和確定性機制檢查,向下到寄存器分配和偷窺優化[2]。
除了產生有效代碼以外,編譯器還執行許多高級檢查,檢測潛在的編譯時間問題。主要是類型檢驗分析、全局流程分析、確定性機制檢查和可能的失敗檢測。
檢測編譯時間錯誤的類型檢查機制。許多Prolog是無類型的解釋程序,而Visual Prolog杰出的特性之一恰恰是其強類型機制,它提供一個額外級別的編程安全性。類型聲明是資料性代碼,有助于編譯器在開發的早期階段指出創建的類型錯誤和更嚴重的邏輯錯誤。因此,通過比照程序員和開發系統之間的類型,使得類型聲明有助于保證一個程序在整個產品生命周期的完整性。更進一步,這些聲明幫助編譯器生成的程序更有效,在執行期間更節省存儲空間。
異常處理和錯誤陷阱。Visual Prolog包括功能強大的處理錯誤情況和控制用戶中斷的機制[1]。程序員可以在錯誤檢查和錯誤報告的各個級別上進行選擇。例如
check_diskette(S):-trap(disk(S), ExitCode, errorhandler(ExitCode)).類和對象。人們常常在面向對象和說明性編程語言之間進行取舍,但在Visual Prolog中,可以同時使用 來自這兩種范例的特性。Visual Prolog語言支持對象和類,在設計中與C++實現類似。
可移植性編碼。Visual Prolog系統可用于多種平臺,并能為多種平臺生成程序。除了個別操作系統專用設施和限制之外,Prolog代碼在所有平臺之間是可移植的。諸如拷貝、重命名和刪除文件、調用其它程序、返回日期和時間等函數,在所有平臺上的工作都是相同的。應用程序能夠針對Windows 98/Me/NT/2000 /XP及Linux等產生各種不同的應用程序版本。
開放式平臺。Visual Prolog很好地設計了與其它編程工具的接口。Visual Prolog能生成其它語言可調用的例程,它本身也能夠調用其它語言編寫的例程。接口是通用的,而且支持所有產生標準.OBJ模塊的編譯器。此外,Visual Prolog程序還能夠調用DLL,并被放在DLL內部。
通過聲明全局Visual Prolog謂詞為C語言(或stdcall)調用約定,通過聲明參數類型和輸入/輸出流程模式,在Visual Prolog和C之間不用特殊的膠合代碼而直接調用C例程(就象它們是Prolog代碼一樣)是完全可能的。這種接口在兩個方向上起作用,當謂詞象C語言那樣聲明時,它們能夠被C語言例程直接調用。例如
GLOBAL PREDICATES procedure LONG vpi_LoadDll(STRING)(I)language c procedure LONG vpi_GetDllProc(LONG, STRING ProcName)-(I,I)language c 數據庫子系統??焖俣浅l`活的數據庫子系統使Visual Prolog成為一個比許多4GL數據庫應用更適當的選擇。這個數據庫系統支持一個獨特的Visual Prolog項的有序鏈的集合,而數據庫的項可以是語言本身支持的任何抽象或數據結構,從簡單的記錄到樹或圖。數據庫系統能直接訪問單個項,或經由項的鏈進行回溯,以產生或匹配特定值。項可以存放在三個位置中的任何一處:在一個文件中、在內存中或在EMS中。數據庫還支持B+樹,以提供快速數據檢索和有效改變項排序的能力。
如果你正在LAN應用程序中使用數據庫,就可以利用Visual Prolog支持外部數據庫系統的文件共享這個優點。通過使用相應的機制,在交易內部使文件訪問串行化,從而可有效地提供多用戶數據庫訪問功能。也就是說,一個數據庫可以被幾個用戶或幾個進程同時打開。
Prolog解釋器源代碼。Visual Prolog還包含Prolog推理機PIE(Prolog Inference Engine):用Visual Prolog編寫的一個標準Prolog解釋器的全部源代碼。對于更多地學習Prolog如何工作和如何把元語言能力加進應用程序來說,這個解釋程序是一個強大的工具。你可以修改這個解釋程序,創建自己專用的邏輯程序設計語言、推理機、專家系統外殼或程序接口等。
把Prolog編譯器嵌入到應用程序。在VPITOOLEXAMPBUILD子目錄中,有一個例子說明如何把Prolog編譯程序和連接程序集成到你的應用程序,以便編譯那些尚未工作的規則。通過在.DLL中實現規則,就可以改變規則而不用關閉應用程序。對于規劃和調度而言,這是一個非常強大的功能特性。要使用這一特性,必須另付給PDC運行時間費用,簽署一個協議,并且不可以用它來創建一個與Visual Prolog產品競爭的應用程序。
4.可視化編程接口
Visual Prolog已經定義了一種可移植的基于GUI的API,稱之為可視化編程接口(VPI)[5]。這個API是一種抽象的設施,可以在Windows 98/Me/NT/2000/XP平臺中找到??梢暬幊探涌诮oVisual Prolog程序員一個比本地編程更可移植和更易使用的GUI API。然而,為了使用戶不受限制,VPI也包含不可移植的平臺專用設施和選件。如果使用平臺專用設施,那么,應用程序就是不可移植的,或者必須使用條件編譯提供不同平臺的選擇行為。還有可能象在WINBIND或PMBIND子目錄中那樣,直接對潛在的API進行編程。
與基本的可移植VPI一起,許多高級GUI部件已經在VPI頂層實現。這些部件提供了源代碼,當然對于VPI所支持的所有平臺都是可移植的。這些工具包括刪格(Grid)、樹型窗口、Explorer視圖、工具欄、制表對話框、高級報表處理等。
客戶/服務器體系結構。Visual Prolog是一個建造客戶/服務器應用程序的功能強大的平臺。其主要途徑當前是TCP/IP綁定,也可以是Windows下的NETDDE。使用其中任何一種設施,程序員可以在單個機器的多個進程之間,或在網絡中分開的各機器程序之間,發送任意復雜的Prolog項。數據庫和邏輯服務器可以用這種設施容易地進行建造。
ODBC和可移植SQL綁定。Visual Prolog的外部數據庫常常是存儲大量數據最快和最靈活的途徑。然而,數據可能在另一個數據庫系統中已經存在,或者這個應用程序需要與其它僅僅使用特定數據庫技術的應用程 序共享數據。在這種情況下,能夠連接到外部數據庫非常重要,而Visual Prolog與可移植SQL的綁定將使這種情況對于大多數數據庫來說得到簡化??梢浦睸QL綁定是基于ODBC、Oracle的OCI庫、或DB2的。對Windows平臺而言,Visual Prolog還包含更廣泛的對Microsoft的ODBC API的直接綁定。
資料處理工具。PDC的DOC工具為處理豐富的格式化資料提供一個高級抽象。用Prolog結構來表示資料使得不受實際格式限制成為可能,而不管它們是否為.RTF、HTML或IPF格式。既有從Prolog項格式到這些格式的生成器,也有分析程序把任何這些格式轉換為Prolog項格式。這些工具展現了許多應用程序的能力,如Word資料生成、Internet助理等。這些工具可以在DOC_TOOL子目錄中找到,子目錄中還包含一個示例程序,可以看到HTML格式的文件如何轉換為.RTF格式時的詳細情形。
Visual Prolog包含許多特性,可以容易地創建由Internet激活的應用程序,從而提供廣泛的Internet編程支持。(1)綁定到套接字(Socket)。包括綁定基本的低級接口和使套接字接口用起來更安全、更容易的高級接口。套接字是針對TCP/IP協議的API,可以用來在Internet的程序之間、在一個網絡內部或同一臺計算機上的兩個進程之間建立一種通信。(2)FTP支持。Visual Prolog包含一些API和示例程序,顯示如何使用Internet文件傳輸協議FTP從Internet服務器發送和接收文件,演示如何使用Internet超文本傳輸協議(HTTP)。這組API可以用來在Visual Prolog中創建WWW客戶與服務器實用程序和Internet代理。(3)CGI支持。Visual Prolog支持CGI,所包含的一些CGI例子演示如何創建和生成動態Web頁的Visual Prolog程序。(4)ISAPI支持。Visual Prolog支持Microsoft的ISAPI,允許在Microsoft信息服務器或任何其它支持ISAPI接口的HTTP服務器上有高性能腳本。此外,Visual Prolog還包括一些例子,顯示如何使Prolog服務器與Java小程序(Applet)進行通信。
Visual Prolog當前提供一個商業專家系統外殼ESTA,同時還提供了全部源代碼,可以定制和包含在自己的應用程序之中。
總之,Visual Prolog提供了大量實例來演示上述各種功能。其中有一個標簽專家,是創建和打印標簽的一個小應用程序。你將發現它是一個真正展示所包含的VPI工具能力的精致的小例子。此外,隨Visual Prolog一起,還提供了許多展示Prolog問題求解的典型例子。
5.Visual Prolog運行環境
推薦的Visual Prolog運行環境如下:MS Windows 98/Me/NT/2000/XP,Pentium以上配置的PC機,推薦64MB RAM以上,硬盤至少75 MB自由空間, 專業版完全安裝大約需要200 MB,SVGA以上分辨率的顯示器。
參考文獻
[1] 雷英杰,張雷,邢清華,孫金萍 編著.Visual Prolog語言教程[M].西安:陜西科技出版社,2002.[2] 雷英杰,邢清華,張雷,孫金萍 編著.Visual Prolog編程指南[M].待出版,2002.[3] H.J.Holst.Visual Prolog Version 5.x Getting Started, Prolog Development Center, 2001.[4] H.J.Holst.Visual Prolog Version 5.x Visual Development Environment, Prolog Development Center, 2001.[5] H.J.Holst.Visual Prolog Version 5.x Visual Programming Interface[M], Prolog Development Center, 2001.雷英杰,男,[1956-],教授,博士生導師。研究領域:人工智能、決策支持、網絡與信息安全等。
第二篇:邏輯型程序設計語言PROLOG詳細教程
邏輯型程序設計語言PROLOG教程
2.3.1邏輯型程序設計語言PROLOG PROLOG的語句
PROLOG語言只有三種語句,分別稱為事實、規則和問題。
1.事實(fact)
格式: <謂詞名>(<項表>).功能
一般表示對象的性質或關系。
其中謂詞名是以小寫英文字母打頭的字母、數字、下劃線等組成的字符串,項表是以逗號隔開的項序列。
例如:
student(john).like(mary ,music).表示“約翰是學生”和“瑪麗喜歡音樂”。2.規則(rule)
格式:
<謂詞名>(<項表>):-<謂詞名>(<項表>){,<謂詞名>(<項表>)}.功能: 一般表示對象間的因果關系、蘊含關系或對應關系。
其中“:-”號表示“if”(也可以直接寫為if),其左部的謂詞是規則的結論(亦稱為頭),右部的謂詞是規則的前提(亦稱為體),{}表示零次或多次重復,逗號表示and(邏輯與),即規則的形式是一個邏輯蘊含式。
例如:
bird(X):-animal(X),has(X,feather).grandfather(X,Y):-father(X,Z),father(Z,Y).第一條規則表示“如果X是動物,并且X有羽毛,則X是鳥”;第二條規則就表示“X是Y的祖父,如果存在Z,X是Z的父親并且Z又是Y的父親”。
3.問題(question)
格式: ?-<謂詞名>(<項表>){,<謂詞名>(<項表>)}.功能 表示用戶的詢問,它就是程序運行的目標。
例如:
?-student(john).?-like(mary,X).2.3.2 PROLOG程序
PROLOG程序一般由一組事實、規則和問題組成。問題是程序執行的起點,稱為程序的目標。
例如下面就是一個PROLOG程序。
likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane ,smith).friend(john,X):-likes(X,reading),likes(X,music).friend(john,X):-likes(X,sports),likes(X,music).?-friend(john,Y).可以看出,這個程序中有四條事實、兩條規則和一個問題。其中事實、規則和問題都分行書寫。規則和事實可連續排列在一起,其順序可隨意安排,但同一謂詞名的事實或規則必須集中排列在一起。問題不能與規則及事實排在一起,它作為程序的目標要么單獨列出,要么在程序運行時臨時給出。
這個程序的事實描述了一些對象(包括人和事物)間的關系;而規則則描述了john交朋友的條件,即如果一個人喜歡讀書并且喜歡音樂(或者喜歡運動和喜歡音樂),則這個人就是john的朋友(當然,這個規則也可看作是john朋友的定義);程序中的問題是“約翰的朋友是誰?”
當然,PROLOG程序中的目標可以變化,也可以含有多個語句(上例中只有一個)。如果有多個語句,則這些語句稱為子目標。例如對上面的程序,其問題也可以是 ?-likes(mary,X).或
?-likes(mary,music).或
?-friend(X,Y).或
?-likes(bell,sports), likes(mary,music), friend(john,X).等等。當然,對于不同的問題,程序運行的結果一般是不一樣的。
2.3.3 PROLOG程序的運行機理
PROLOG程序的運行是從目標出發,并不斷進行匹配、合一、歸結,有時還要回溯,直到目標被完全滿足或不能滿足時為止。1.自由變量與約束變量
PROLOG中稱無值的變量為自由變量,有值的變量為約束變量。一個變量取了某值就說該變量約束于某值,或者說該變量被某值所約束,或者說該變量被某值實例化了。
2.匹配合一
兩個謂詞可匹配合一,是指兩個謂詞的名相同,參量項的個數相同,參量類型對應相同,并且對應參量項還滿足下列條件之一:
(1)如果兩個都是常量,則必須完全相同。
(2)如果兩個都是約束變量,則兩個約束值必須相同。
(3)如果其中一個是常量,一個是約束變量,則約束值與常量必須相同。
(4)至少有一個是自由變量。例如:下面的兩個謂詞
pre1(“ob1”,“ob2”,Z)
pre1(“ob1”,X,Y)
只有當變量X被約束為“ob2”,且Y、Z的約束值相同或者至少有一個是自由變量時,它們才是匹配合一的。
3.回溯
所謂回溯,就是在程序運行期間,當某一個子目標不能滿足(即謂詞匹配失敗)時,控制就返回到前一個已經滿足的子目標(如果存在的話),并撤消其有關變量的約束值,然后再使其重新滿足。成功后,再繼續滿足原子目標。如果失敗的子目標前再無子目標,則控制就返回到該子目標的上一級目標(即該子目標謂詞所在規則的頭部)使它重新匹配?;厮菀彩荘ROLOG的一個重要機制。
下面,我們介紹PROLOG程序的運行過程。我們仍以上面的程序為例。設所給的詢問是
?-friend(john,Y).(john和誰是朋友?)
則求解目標為
friend(john,Y).這時,系統對程序進行掃描,尋找能與目標謂詞匹配合一的事實或規則頭部。顯然,程序中前面的四條事實均不能與目標匹配,而第五個語句的左端即規則
friend(john,X):-likes(X,reading),likes(X,music).的頭部可與目標謂詞匹配合一。但由于這個語句又是一個規則,所以其結論要成立則必須其前提全部成立。于是,對原目標的求解就轉化為對新目標
likes(X,reading),likes(X,music).的求解。這實際是經歸結,規則頭部被消去,而目標子句變為
?-likes(X,reading),likes(X,music).現在依次對子目標
likes(X,reading)和likes(X,music)
求解。
子目標的求解過程與主目標完全一樣,也是從頭對程序進行掃描,不斷進行測試和匹配合一等,直到匹配成功或掃描完整個程序為止??梢钥闯?,對第一個子目標like(X,reading)的求解因無可匹配的事實和規則而立即失敗,進而導致規則
friend(john,X):-likes(X,reading),likes(X,music).的整體失敗。于是,剛才的子目標
likes(X,reading)和likes(X,music)
被撤消,系統又回溯到原目標friend(john,X)。這時,系統從該目標剛才的匹配語句處(即第五句)向下繼續掃描程序中的子句,試圖重新使原目標匹配,結果發現第六條語句的左部,即規則
friend(john,X):-likes(X,sports),likes(X,music).的頭部可與目標為謂詞匹配。但由于這個語句又是一個規則,于是,這時對原目標的求解,就又轉化為依次對子目標
likes(X,sports)和likes(X,music) 的求解。這次子目標likes(X,sports)與程序中的事實立即匹配成功,且變量X被約束為bell。于是,系統便接著求解第二個子目標。由于變量X已被約束,所以這時第二個子目標實際上已變成了
likes(bell,music).由于程序中不存在事實likes(bell,music),所以該目標的求解失敗。于是,系統就放棄這個子目標,并使變量X恢復為自由變量,然后回溯到第一個子目標,重新對它進行求解。由于系統已經記住了剛才已同第一子目標謂詞匹配過的事實的位置,所以重新求解時,便從下一個事實開始測試。
易見,當測試到程序中第三個事實時,第一個子目標便求解成功,且變量X被約束為mary。這樣,第二個子目標也就變成了
likes(mary,music).再對它進行求解。這次很快成功。
由于兩個子目標都求解成功,所以,原目標friend(john,Y)也成功,且變量Y被約束為mary(由Y與X的合一關系)。于是,系統回答:
Y=mary
程序運行結束。
上面只給出了問題的一個解。如果需要和可能的話,系統還可把john的所有朋友都找出來。我們把上述程序的運行過程再用示意圖(圖2─1)描述如下:
圖2─1
PROLOG程序運行機理示例
上述程序的運行是一個通過推理實現的求值過程。我們也可以使它變為證明過程。例如,把上述程序中的詢問改為
friend(john,mary)
則系統會回答:yes
若將詢問改為:
riend(john,smith)
則系統會回答:no
從上述程序的運行過程可以看出,PROLOG程序的執行過程是一個(歸結)演繹推理過程。其特點是:推理方式為反向推理,控制策略是深度優先,且有回溯機制。其具體實現方法是:匹配子句的順序是自上而下;子目標選擇順序是從左向右;(歸結后)產生的新子目標總是插入被消去的目標處(即目標隊列的左部)。PROLOG的這種歸結演繹方法被稱為SLD(LinearresolutionwithSelectionfunctionforDefiniteclause)歸結,或SLD反駁-消解法。SLD歸結就是PROLOG程序的運行機理,它也就是所謂的PROLOG語言的過程性語義。2.4
Turbo PROLOG程序設計 2.4.1 Turbo PROLOG的程序結構
一個完整的Turbo PROLOG(2.0版)程序一般包括常量段、領域段、數據庫段、謂詞段、目標段和子句段等六個部分。各段以其相應的關鍵字constants、domains、database、predicates、goal和clauses開頭加以標識。:
另外,在程序的首部還可以設置指示編譯程序執行特定任務的編譯指令;在程序的任何位置都可設置注解??傊?,一個完整的TurboPROLOG(2.0版)程序的結構如下
/*<注釋>*/
<編譯指令>
constants
<常量說明>
domains
<域說明>
database
<數據庫說明>
predicates
<謂詞說明>
goal
<目標語句>
clauses
<子句集>
當然,一個程序不一定要包括上述所有段,但一個程序至少要有一個predicates段、clauses段和goal段。在大多數情形中,還需要一個domains段,以說明表、復合結構及用戶自定義的域名。如若省略goal段,則可在程序運行時臨時給出,但這僅當在開發環境中運行程序時方可給出。若要生成一個獨立的可執行文件,則在程序中必須包含goal段。另一方面,一個程序也只能有一個goal段。
例2.3 如果把上節中的程序要作為TurboPROLOG程序,則應改寫為:
/*例子程序-1*/
DOMAINS
name=symbol
PREDICATES
likes(name,name).friend(name,name)
GOAL
friend(john,Y),write(″Y=″,Y).CLAUSES likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane,smith).friend(john,X):-likes(X,sports),likes(X,music).friend(john,X):-likes(X,reading),likes(X,music).結合上例,我們再對上述程序結構中的幾個主要段的內容和作用加以說明(其余段在后面用到時再作說明):
領域段該段說明程序謂詞中所有參量項所屬的領域。領域的說明可能會出現多層說明,直到最終說明到Turbo PROLOG的標準領域為止(如上例所示)。Turbo PROLOG的標準領域即標準數據類型,包括整數、實數、符號、串和符號等,其具體說明如表2.1所示。
表2.1 Turbo PROLOG的標準領域
謂詞段:該段說明程序中用到的謂詞的名和參量項的名(但Turbo PROLOG的內部謂詞無須說明)。
子句段:該段是Turbo PROLOG程序的核心,程序中的所有事實和規則就放在這里,系統在試圖滿足程序的目標時就對它們進行操作。
目標段:該段是放置程序目標的地方。目標段可以只有一個目標謂詞,例如上面的例子中就只有一個目標謂詞;也可以含有多個目標謂詞,如:
goal
readint(X),Y=X+3,write(“Y=”,Y).就有三個目標謂詞。這種目標稱為復合目標。
另外,一般稱程序目標段中的目標為內部目標,而稱在程序運行時臨時給出的目標為外部目標。
2.4.2 Turbo PROLOG的數據與表達式 1.領域
1)標準領域
Turbo PROLOG中不定義變量的類型,只說明謂詞中各個項的取值域。2)結構
結構也稱復合對象,它是TurboPROLOG謂詞中的一種特殊的參量項(類似于謂詞邏輯中的函數)。
結構的一般形式為
<函子>(<參量表>)
其中函子及參量的標識符與謂詞相同。注意,這意味著結構中還可包含結構。所以,復合對象可表達樹形數據結構。例如下面的謂詞
likes(Tom,sports(football,basketball,table-tennis)).中的
sports(football,basketball,table-tennis)
就是一個結構,即復合對象。
又如:
person(“張華”,student(“西安石油學院”),address(“中國”,“陜西”,“西安”)).reading(“王宏”,book(“人工智能技術基礎教程”,“西安電子科技大學出版社”)).friend(father(“Li”),father(“Zhao”)).這幾個謂詞中都有復合對象。復合對象在程序中的說明,需分層進行。例如,對于上面的謂詞
likes(Tom,sports(football,basketball,table-tennis)).在程序中可說明如下:
domains
name=symbol
sy=symbol
sp=sports(sy,sy,sy)
predicates
likes(name,sp)3)表
表的一般形式是
[x1,x2,…,xn]
其中xi(i=1,2,…,n)為PROLOG的項,一般要求同一個表的元素必須屬于同一領域。
不含任何元素的表稱為空表,記為[]。例如下面就是一些合法的表。
[1,2,3]
[apple,orange,banana,grape,cane]
[“PROLOG”,“MAENS”,“PROGRAMMING”,“in logic”] [[a,b],[c,d],[e]] []
表的最大特點是其元素個數可在程序運行期間動態變化。表的元素也可以是結構或表,且這時其元素可以屬于不同領域。
例如:
name(“Li Ming”),age(20),sex(male),address(xi an)] [[1,2],[3,4,5],[6,7]]
都是合法的表。后一個例子說明,表也可以嵌套。
實際上,表是一種特殊的結構。它是遞歸結構的另一種表達形式。這個結構的函數名取決于具體的PROLOG版本。這里我們就用一個圓點來表示。
下面就是一些這樣的結構及它們的表表示形式:
結構形式
表形式 ·(a,[])
[a] ·(a,·(b,[]))
[a,b] ·(a,·(b,·(c,[])))
[a,b,c]
表的說明方法是在其組成元素的說明符后加一個星號*。如:
domains
lists=string*
predicates
pl(lists)
就說明謂詞pl中的項lists是一個由串string組成的表。
對于由結構組成的表,至少得分三步說明。例如對于下面謂詞p中的表
p([name(“Liming”),age(20)])
則需這樣說明:
domains
rec=seg*
seg=name(string);age(integer)
predicates
p(rec)2.常量與變量
由上面的領域可知,Turbo PROLOG的常量有整數、實數、字符、串、符號、結構、表和文件這八種數據類型。同理,Turbo PROLOG的變量也就有這八種取值。另外,變量名要求必須是以大寫字母或下劃線開頭的字母、數字和下劃線序列,或者只有一個下劃線。這后一種變量稱為無名變量。3.算術表達式
Turbo PROLOG提供了五種最基本的算術運算:加、減、乘、除和取模,相應運算符號為+、-、*、/、mod。這五種運算的順序為:*、/、mod優先于+、-。同級從左到右按順序運算,括號優先。算術表達式的形式與數學中的形式基本一樣。例如:
數學中的算術表達式
PROLOG中的算術表達式
x+yz
X+Y*Z
ab-c/d
A*B-C/D
u mod v
U mod V(表示求U除以V所得的余數)即是說,Turbo PROLOG中算術表達式采用通常數學中使用的中綴形式。這種算術表達式為PROLOG的一種異體結構,若以PROLOG的結構形式來表示,則它們應為
+(X,*(Y,Z))
-(*(A,B),/(C,D))
mod(U,V)
所以,運算符+、-、*、/和mod實際也就是PROLOG內部定義好了的函數符。
在Turbo PROLOG程序中,如果一個算術表達式中的變元全部被實例化(即被約束)的話,則這個算術表達式的值就會被求出。求出的值可用來實例化某變量,也可用來同其他數量進行比較,用一個算術表達式的值實例化一個變量的方法是用謂詞“is”或“=”來實現。例如:
Y is X+5 或 Y=X+5
(*)
就使變量Y實例化為X+5的值(當然X也必須經已被某值實例化),可以看出,這里對變量Y的實例化方法類似于其他高級程序語言中的“賦值”,但又不同于賦值。例如,在PROLOG中下面的式子是錯誤的:
X=X+1 4.關系表達式
Turbo PROLOG提供了六種常用的關系運算,即小于、小于或等于、等于、大于、大于或等于和不等于,其運算符依次為
<,<=,=,>,>=,<>
Turbo PROLOG的關系表達式的形式和數學中的也基本一樣,例如:
數學中的關系式
Turbo PROLOG中的關系式
X+1≥Y
X+1>=Y
X≠Y
X<>Y 即是說,Turbo PROLOG中的關系式也用中綴形式。當然,這種關系式為Turbo PROLOG中的異體原子。若按Turbo PROLOG中的原子形式來表示,則上面的兩個例子為
>=(X+1,Y)和<>(X,Y)
所以上述六種關系運算符,實際上也就是Turbo PROLOG內部定義好了的六個謂詞。這六個關系運算符可用來比較兩個算術表達式的大小。
例如:
brother(Name1,Name2):-person(Name1,man,Age1),person(Name2,man,Age2),mother(Z,Name1),mother(Z,Name2),Age1>Age2.需要說明的是,“=”的用法比較特殊,它既可以表示比較,也可以表示約束值,即使在同一個規則中的同一個“=”也是如此。
例如:
(例一)
p(X,Y,Z):-Z=X+Y.當變量X、Y、Z全部被實例化時,“=”就是比較符。如:對于問題
Goal:p(3,5,8).機器回答:yes。而對于
Goal:p(3,5,7).機器回答:no。
即這時機器把X+Y的值,與Z的值進行比較。
(例二)但當X,Y被實例化,為Z未被實例化時,“=”號就是約束符。如:
Goal:p(3,5,Z).機器回答:Z=8 這時,機器使Z實例化為X+Y的結果。2.4.3 輸入與輸出
雖然PROLOG能自動輸出目標子句中的變量的值,但這種輸出功能必定有限,往往不能滿足實際需要;另一方面,對通常大多數的程序來說,運行時從鍵盤上輸入有關數據或信息也是必不可少的。為此每種具體PROLOG一般都提供專門的輸入和輸出謂詞,供用戶直接調用。例如,下面就是TorboPROLOG的幾種輸入輸出謂詞:
(1)readln(X)。
這個謂詞的功能是從鍵盤上讀取一個字符串,然后約束給變量X。
(2)readint(X)。
這個謂詞的功能是從鍵盤上讀取一個整數,然后約束給變量X,如果鍵盤上打入的不是整數則該謂詞失敗。
(3)readreal(X)。
這個謂詞的功能是從鍵盤上讀取一個實數,然后約束給變量X,如果鍵盤上打入的不是實數則該謂詞失敗。
(4)readchar(X)。
這個謂詞的功能是從鍵盤上讀取一個字符,然后約束給變量X,如果鍵盤上打入的不是單個字符,則該謂詞失敗。
(5)write(X1,X2,… Xn)。
這個謂詞的功能是把項Xi(i=1,2,…n)的值顯示在屏幕上或者打印在紙上,當有某個Xi未實例化時,該謂詞失敗,其中的Xi可以是變量,也可以是字符串或數字。
(6)nl換行謂詞。它使后面的輸出(如果有的話)另起一行。另外,利用write的輸出項“n”也同樣可起換行作用。例如:
write(“name”), n l ,write(“age”)
與write(“name”,“n”,“age”)的效果完全一樣。例2.4用上面的輸入輸出謂詞編寫一個簡單的學生成績數據庫查詢程序。
PREDICATES student(integer,string,real)grade GOAL grade.CLAUSES student(1,“張三”,90.2).student(2,“李四”,95.5).student(3,“王五”,96.4).grade:-write(“請輸入姓名:”),readln(Name), student(-,Name,Score), nl,write(Name,“的成績是”,Score).grade:-write(“對不起,找不到這個學生!”).grade:-write(“對不起,找不到這個學生!”).下面是程序運行時的屏幕顯示: 請輸入姓名: 王五
王五的成績是96.4。
2.4.4 分支與循環
PROLOG中并無專門的分支和循環語句,但PROLOG也可實現分支和循環程序結構。1.分支
對于通常的IF-THEN-ELSE分支結構,PROLOG可用兩條同頭的并列規則實現。例如,將
IF x>0THENx:=1
ELSE x:=0 用PROLOG實現則是 Br :-x>0,x=1.Br :-x=0.類似地,對于多分支,可以用多條規則實現。例如: Br :-x>0,x=1.Br :-x=0,x=0.Br :-x<0,x=-1.2.循環
PROLOG可以實現計循環次數的FOR循環,也可以實現不計循環次數的DO循環。例如下面的程序段就實現了循環,它使得write語句重復執行了三次,而打印輸出了三個學生的記錄。
student(1,“張三”,90.2).student(2,“李四”,95.5).student(3,“王五”,96.4).print:-student(Number,Name,Score),write(Number,Name,Score),n l ,Number=3.這個例子可以看作是計數循環。當然,也可以通過設置計數器而實現真正的計數循環。下面的程序段實現的則是不計數的DO循環。
student(1,“張三”,90.2).student(2,“李四”,95.5).student(3,“王五”,96.4).print:-student(Number,Name,Score),write(Number,Name,Score),nl,fail.print:-.這個程序段中的fail是一個內部謂詞,它的語義是恒失敗。這個程序段與上面的程序段的差別僅在于把原來用計數器(或標記數)循環控制語句變成了恒失敗謂詞fail,另外再增加了一個print語句。增加這個語句的目的是為程序設置一個出口。因為fail是恒失敗,下面若無出口的話,將引起print本身的失敗。進而又會導致程序中的連鎖失敗。
2.4.5 動態數據庫
動態數據庫就是在內存中實現的動態數據結構。它由事實組成,程序可以對它操作,所以在程序運行期間它可以動態變化。Turbo PROLOG提供了三個動態數據庫操作謂詞: asserta(
asserta(
assertz(
retract(
例如語句
asserta(student(20,“李明”,90.5)).將在內存的謂詞名為student的事實前插入一個新事實:
student(20,“李明”,90.5)
如果內存中還沒有這樣的事實,則它就是第一個。又如語句
retract(student(20,-,-)).將從內存的動態數據庫中的刪除事實
student(20,-,-)它可解釋為學號為20的一個學生的記錄。注意,這里用了無名變量-。
可以看出,PROLOG提供的動態數據庫機制,可非常方便地實現堆棧、隊列等動態數據結構,提供的數據庫操作謂詞大大簡化了編程。
另外,PROLOG還提供了謂詞
save(
2.4.6 表處理與遞歸
表是PROLOG中一種非常有用的數據結構。表的表述能力很強,數字中的序列、集合,通常語言中的數組、記錄等均可用表來表示。表的最大特點是其長度不固定,在程序的運行過程中可動態地變化。具體來講,就是在程序運行時,可對表施行一些操作,如給表中添加一個元素,或從中刪除一個元素,或者將兩個表合并為一個表等等。用表還可以方便地構造堆棧、隊列、鏈表、樹等動態數據結構。
表還有一個重要特點,就是它可分為頭和尾兩部分。表頭是表中第一個元素,而表尾是表中除第一個元素外的其余元素按原來順序組成的表。例如下面的例子:
表
表頭
表尾
[1,2,3,4,5]
[2,3,4,5]
[apple,orange,banana]
apple
[orange,banana]
[[a,b],[c],[d,e]]
[a,b]
[[c],[d,e]]
[“PROLOG”]
“PROLOG“
[]
[]
無定義
無定義
在程序中是用豎線“|”來區分表頭和表尾的,而且還可以使用變量。例如一般地用[H|T]來表示一個表,其中H、T都是變量,H為表頭,T為表尾。注意,此處H是一個元素(表中第一個元素),而T則是一個表(除第一個元素外的表中其余元素按原來順序組成的表)。表的這種表示法很有用,它為表的操作提供了極大的方便。下面我們就給出用這種表示法通過匹配合一提取表頭和表尾的例子。
表1
表2
合一后的變量值 [X|Y]
[a,b,c]
X=a,Y=[b,c] [X|Y]
[a]
X=a,Y=[] [a|Y]
[X,b]
X=a,Y=[b] [X,Y,Z]
[a,b,c]
X=a,Y=b,Z=c [[a,Y]|Z]
[[X,b],[c]]
X=a,Y=b,Z=[[c]]
還需說明的是,表中的豎杠“|”后面只能有一個變量。例如寫法[X|Y,Z]就是錯誤的。但豎杠的前面的變量可以多于一個。例如寫法[X,Y|Z]是允許的。這樣,這個表同[a,b,c]匹配合一后,有
X=a,Y=b,Z=[c]
另外,豎杠的前面和后面也可以是常量,例如[a|Y]和[X|b]都是允許的,但注意,后一個表稱為無尾表,如果它同表[a|Y]匹配,則有
X=a,Y=b
(而不是Y=[b])
如果無豎杠“|”,則不能分離出表尾。例如,表[X,Y,Z]與[a,b,c]合一后得X=a,Y=b,Z=c。其中變量Z并非等于[c]。
例2.5 設計一個能判斷對象X是表L的成員的程序。
我們可以這樣設想:
(1)如果X與表L中的第一個元素(即表頭)是同一個對象,則X就是L的成員;
(2)如果X是L的尾部的成員,則X也就是L的成員。
根據這種邏輯關系,于是有下面的PROLOG程序:
member(X,[X|Tail]).member(X,[Head|Tail]):-member(X,Tail).
其中第一個子句的語義就是上面的第一句話,第二個子句的語義就是上面的第二句話??梢钥闯?,這個程序中使用了遞歸技術,因為謂詞member的定義中又含有它自身。利用這個程序我們就可以判定任意給定的一個對象和一個表之間是否具有member(成員)關系。
例如,我們取表L為[a,b,c,d],取X為a,對上面的程序提出如下詢問:
Goal:member(a,[a,b,c,d]).
則有回答:yes
同樣對于詢問:
Goal:member(b,[a,b,c,d]).Goal:member(c,[a,b,c,d]).Goal:member(d,[a,b,c,d]).
都有回答:yes
但若詢問
Goal:member(e,[a,b,c,d]).
則回答:no
如果我們這樣詢問
Goal:member(X,[a,b,c,d]).
意思是要證明存在這樣的X,它是該表的成員,這時系統返回X的值,即
X=a
如果需要的話,系統還會給出X的其他所有值。
例2.6 表的拼接程序,即把兩個表連接成一個表。
append([],L,L).append([H|T],L2,[H|Tn]):-append(T,L2,Tn).
程序中第一個子句的意思是空表同任一表L拼接的結果仍為表L;第二個子句的意思是說,一個非空的表L1與另一個表L2拼接的結果L3是這樣一個表,它的頭是L1的頭,它的尾是由L1的尾T同L2拼接的結果Tn。這個程序刻劃了兩個表與它們的拼接表之間的邏輯關系。
可以看出,謂詞append是遞歸定義的,子句append([],L,L).為終結條件,即遞歸出口。
對于這個程序,如果我們詢問
Goal:append([1,2,3],[4,5],L).
則系統便三次遞歸調用程序中的第二個子句,最后從第一個子句終止,然后反向依次求出每次的拼接表,最后輸出
L=[1,2,3,4,5]
當然,對于這個程序也可以給出其他各種詢問,如: Goal:append([1,2,3],[4,5],[1,2,3,4,5]). 系統回答:yes Goal:append([1,2,3],[4,5],[1,2,3,4,5,6]). 系統回答:no Goal:append([1,2,3],Y,[1,2,3,4,5]). 系統回答:Y=[4,5]
Goal:append(X,[4,5],[1,2,3,4,5]).
系統回答:X=[1,2,3]
Goal:append(X,Y,[1,2,3,4,5]). 系統回答: X=[],Y=[1,2,3,4,5] X=[1],Y=[2,3,4,5] X=[1,2],Y=[3,4,5] X=[1,2,3],Y=[4,5] …
等等(如果需要所有解的話)。
例2.7 表的輸出。
print([]).print([H|T]):-write(H),print(T).例2.8 表的倒置,即求一個表的逆序表。
reverse([],[]).reverse([H|T],L):-reverse(T,L1),append(L1,[H],L).
這里,reverse的第一個項是輸入,即原表,第二個項是輸出,即原表的倒置。2.4.7 回溯控制
PROLOG在搜索目標解的過程中,具有回溯機制,即當某一個子目標Gi不能滿足時,就返回到該子目標的前一個子目標Gi-1,并放棄Gi-1的當前約束值,使它重新匹配合一。在實際問題中,有時卻不需要回溯,為此PROLOG中就專門定義了一個阻止回溯的內部謂詞——“!”,稱為截斷謂詞。
截斷謂詞的語法格式很簡單,就是一個感嘆號“!”。!的語義是:
(1)若將“!”插在子句體內作為一個子目標,它總是立即成功;
(2)若“!”位于子句體的最后,則它就阻止對它所在子句的頭謂詞的所有子句的回溯訪問,而讓回溯跳過該頭謂詞(子目標),去訪問前一個子目標(如果有的話);
(3)若“!”位于其他位置,則當其后發生回溯且回溯到“!”處時,就在此處失敗,并且“!”還使它所在子句的頭謂詞(子目標)整個失?。醋柚乖偃ピL問頭謂詞的其余子句(如果有的話),即迫使系統直接回溯到該頭謂詞(子目標)的前一個子目標(如果有的話))。
例2.9考慮下面的程序:
p(a).(2─1)
p(b).(2─2)
q(b).(2─3)
r(X):-p(X),q(X).(2─4)
r(c).
對于目標:r(Y).
可有一個解
Y=b
但當我們把式(2─4)改為
r(X):-p(X),!,q(X).(2─4′)
時,卻無解。
這是由于添加了截斷謂詞“!”。因為式(2─4′)中求解子目標p(X)時,X被約束到a,然后跳過“!”,但在求解子目標q(a)時遇到麻煩,于是又回溯到“!”,而“!”阻止了對p(X)的下一個子句p(b)和r的下一個定義子句r(c)的訪問。從而,導致整個求解失敗。
例2.10 設有程序:
g0:-g11,g12,g13.(2─5)g0:-g14.(2─6)g12:-g21,!,g23.(2─7)g12:-g24,g25.(2─8).........
給出目標:g0.假設運行到子目標g23時失敗,這時如果子句(2─7)中無!的話,則會回溯到g21,并且,如果g21也失敗的話,則會訪問下面的子句(2─8)。但由于有!存在,所以不能回溯到g21,而直接宣告g12失敗。于是,由子句(2─5),這時則回溯到g11。如果我們把子句(2─7)改為
g12:-g21, g23,!.(2─9)當然這時若g23失敗時,便可回溯到g21,而當g21也失敗時,便回溯到g12,即子句(2─8)被“激活”。但對于修改后的程序,如果g13失敗,則雖然可回溯到g12,但對g12不做任何事情,便立即跳過它,而回溯到g11,如果子句(2─9)中無!,則當g13失敗時,回溯到g12便去考慮子句(2─8),只有當子句(2─8)再失敗時才回溯到g11。2.4.8 程序舉例
下面我們給出幾個簡單而又典型的例子程序。通過這些程序,讀者可以進一步體會和理解PROLOG程序的風格和能力,也可以掌握一些基本的編程技巧。
例2.11 下面是一個簡單的路徑查詢程序。程序中的事實描述了如圖2─2所示的有向圖,規則是圖中兩節點間有通路的定義。
圖2─2
有向圖
predicates
road(symbol,symbol)
path(symbol,symbol)clauses
road(a,b).road(a,c).road(b,d).road(c,d).road(d,e).road(b,e).path(X,Y):-road(X,Y).path(X,Y):-road(X,Z),path(Z,Y).程序中未含目標,所以運行時需給出外部目標。例如當給目標:
path(a,e).
系統將回答:yes
但當給目標:
path(e,a).
時,系統則回答:no
如果給出目標:
run. 且在程序中增加子句
run:-path(a,X),write(”X=“,X),nl,fail.run. 屏幕上將會輸出:
X=b
X=c
X=d
X=e
X=d
X=e
X=e
即從a出發到其他節點的全部路徑。
例2.12 下面是一個求階乘程序,程序中使用了遞歸。
/*aFactorialProgram*/
domains
n,f=integer
predicates
factorial(n,f)
goal
readint(I),factorial(I,F),write(I,”!=“,F).clauses
factorial(1,1).factorial(N,Res):-
N>0,N1=N-1,factorial(N1,FacN1),Res=N*FacN1.程序運行時,從鍵盤輸入一個整數,屏幕上將顯示其階乘數。
例2.13 下面是一個表的排序程序,采用插入排序法。
/*insertsort*/
domains
listi=integer*
predicates
insert-sort(listi , listi)
insert(integer,listi,listi)
asc-order(integer,integer)
clauses
insert-sort([],[]).insert-sort([H|Tail],Sorted-list):-insert-sort(Tail,Sorted-Tail),insert(H,Sorted-Tail,Sorted-list).insert(X,[Y|Sorted-list],[Y|Sorted-list1]):-asc-order(X,Y),!,insert(X,Sorted-list,Sorted-list1).insert(X,Sorted-list,[X|Sorted-list]).asc-order(X,Y):-X>Y.程序中對表處理使用了遞歸。程序中也未給出目標,需要在運行時臨時給出。例如當給目標:
insert-sort([5,3,4,2,6,1,7,8,9,0],L).系統將輸出:
L=[0,1,2,3,4,5,6,7,8,9]
例2.14下面是一個簡單的通信錄管理程序,其中用到輸入輸出、動態數據庫等。通過閱讀這個程序,我們還可以掌握循環結構和簡單的菜單程序編寫方法。
/*通信錄*/
database
person(string,integer)
predicates
address-book
chose(integer)
input query
repeat goal
address-book.clauses
address-book:-repeat,clearwindow,write(”==============“),nl,write(”1--錄入“),nl, write(”2--查詢“),nl, write(”3--退出“),nl,write(”==============“),nl, write(”請選擇:-“), readint(N), chose(N).chose(1):-input,fail.chose(2):-query,fail.chose(3):-clearwindow,!.input:-clearwindow,write(”姓名:“),readln(Name),write(”電話:“),readint(Tel),assertz(person(Name,Tel)),!.query:-clearwindow,write(”姓名:“),readln(Name),person(Name,Tel),write(”電話:“,Tel),readchar(-),!.repeat.repeat:-repeat.程序中的repeat恒成功。它與內部謂詞fail配合實現了循環。
需說明的是,這僅是一個演示性程序,還不能實用。因為這里的通信錄并未存入磁盤文件。用謂詞save就可方便地把通信錄存入磁盤文件。例如用語句
save(”addrbook.dat“)
就可把已插入內存的person事實存入文件addrbook.dat中。而語句
consult(”addrbook.dat“)
則可又將該文件中的事實裝入內存。
2.4 函數型程序設計語言LISP
LISP語言的主要特點是:
(1)LISP程序由一組函數組成,程序的執行過程是函數的調用過程。
(2)程序和數據在形式上是相同的,即都是符號表達式,簡稱為S─表達式。
(3)遞歸是LISP語言的主要控制結構。
(4)程序以交互方式運行。
2.2.1 LISP的程序結構與運行機制
LISP的程序一般由函數的定義和函數的調用兩部分組成。其一般格式為:
(DEFUN(<函數名>(<形參表>)<函數體>)
(<函數名>(〖WB〗<形參表>)<函數體>)
…
(<函數名>(<形參表>)<函數體>))
(<函數名><實參表>)
(<函數名><實參表>)
…
(<函數名><實參表>)
其中的“DEFUN”是定義函數的關鍵字,“函數名”可以是系統的內部函數(名),也可以是用戶用DEFUN定義的函數(名)。例如下面就是一個LISP程序。
(DEFUNHANOI(a b c n)
(COND((=n1)(MOVE-DISK a c))
(T(HANOI a c b(-n1))
(MOVE-DISK a c)
(HANOI b a c(-n1))))(DEFUNMOVE-DISK(from to)(TERPRI)(PRINC″Move Disk From″)(PRINC from)(PRINC”To“)(PRINC to))
(HANOI′a′b′c3)2.2.2 S─表達式
從語法上看,LISP程序的基本單位是S─表達式。S─表達式又可分為原子和表兩大類。原子(atom)是由字母和數字組成的字符串,是S─表達式的最簡單情況。原子又可分為文字原子、串原子和數字原子三種。
文字原子又稱符號(symbol),是以字母開頭的字母數字串,用來表示常量、變量和函數的名字等。例如:ABC、X1等。
串原子是由雙引號括起來的一串字符。如”LISP Program"。
數字原子由數字串組成。在其前面可以有符號“-”或“+”,中間可出現“.”,用來表示整數和實數。例如:256、-66、3.14159等。
S─表達式可以遞歸定義如下:
(1)原子是S─表達式。
(2)若S1和S2是S─表達式,則(S1·S2)也是S─表達式。由定義,下面的式子都是S─表達式:
X2
123
(A·B)
(A·(B·C))
表(list)是LISP語言中最常用的數據類型,也是主要的處理對象。表是由圓括號括起來的由空格分開的若干個元素的集合。
表的一般形式為:
(…)
例如:
(X Y Z),(+12),(A(B C))
左括號后面的第一個元素稱為表頭,其余的元素組成的表稱為表尾。例如,對于表
(+12)的頭為+,尾為(12)。
特別地,元素個數為零的表為空表,記為()或NIL。
表是一種特殊的S─表達式,每一個表都對應著一個S─表達式。二者的關系由下面的例子說明。
表←——————————————→S-表達式
(A)
(A·NIL)
(AB)
(A·(B·NIL))
(ABC)
(A·(B·(C·NIL)))
((AB)CD)
((A·(B·NIL))·(C·(D·NIL)))
可以看出,表的S─表達式的結構實際是一棵二叉樹。
2.2.3 基本函數
LISP的函數都以表的形式出現,并一律使用前綴表示方式,即表頭為函數名,并且每個函數都有一個返回值。LISP的函數可分為語言自身提供的內部函數(稱為基本函數或系統函數)和用戶自定義函數兩類?;竞瘮档姆N類有十多個,下面僅給出其中主要的幾類。
1.表處理函數
表處理是LISP的主要特色,表處理的函數也很多,下面僅給出最常用的幾個。1)CAR函數
格式(CAR<表>)
其中CAR為函數名,它是一個保留字(下同)。功能取出表中的表頭。
例如:(CAR′(LISP Language Program))返回值為:LISP 2)CDR函數
格式(CDR<表>)
功能取出表中的表尾。
例如:(CDR′(LISP Language Program))
返回值為:(Language Program)
3)CONS函數
格式(CONS<表>)
功能將S─表達式作為一個元素加到表中去,并作為所構成新表中的第一個元素。
例如:(CONS′My′(LISP Language Program))
返回值為:(My LISP Language Program)4)APPEND函數
格式(APPEND<表1><表2>…<表n>)功能
將n個表中的元素合并成一個新表。例如:(APPEND′(TIGER LION)′(DOG CAT))返回值為:(TIGER LION DOG CAT)5)LIST函數
格式(LIST…)功能把n個S─表達式作為元素括在一起構成一張新表。例如:(LIST′YELLOW′RED′BLUE)返回值為:(YELLOW RED BLUE)
2.算術函數
LISP的算術表達式也是用函數表示的,稱為算術函數。下面我們僅舉例說明。
(+25)
表示2+5,返回值為7。
(-(*48)(/105))表示4×8-10/5,返回值為30。3.求值與賦值函數
在上面的函數中多次出現撇號′,它的意思是禁止求值。為什么要禁止求值呢?原來,LISP總是試圖對一切S─表達式求值。表的值是通過函數運算而得到的,原子的值則是通過賦值函數實現的。撇號′也是一個函數,它實際是禁止求值函數QUOTE的簡寫形式。
賦值函數有多個,其中SET函數是一個最基本的賦值函數。
格式(SET<變量>)
功能把S─表達式賦給變量。
例如:
(SET′X′8);
X 得到值8
(SET′Y′(a b c));
Y 得到值(a b c)
(SET′Z(CDRY);
Z 得到值(b c)
另外,賦值函數還有SETQ、SETF(COMMON LISP),其功能是類似的。
4.謂詞函數
返回值為邏輯值真或假的函數稱為謂詞函數,簡稱謂詞。LISP中真和假分別用T和NIL表示,當函數的返回值為非NIL時,也表示為真。另外,NIL也表示空表。謂詞函數也有多個,下面我們僅給出常用的幾個。(1)原子謂詞ATOM
格式(ATOM<參數>)
功能檢測其參數是否為原子,是則返回T,否則返回NIL。
例如:
(ATOM′a);返回T
(ATOM′(a b));返回NIL(2)相等謂詞EQUAL
格式(EQUAL<參數><參數>)
功能判斷兩個參數是否邏輯相等。
例如:
(EQUAL′a′a);
返回T
(EQUAL′(a b)′(ac));
返回NIL
(EQUAL′(a b)(CONS′a′(b)));
返回T
還有一種相等謂詞,其格式為:(EQ<參數><參數>),但它只是用來判斷兩個原子是否相等。例如:(EQ′a′a),則返回T(3)判空表函數NULL
格式(NULL<參數>)
功能判斷參數是否為空表,是則返回T,否則返回NIL。
5.條件函數
條件函數也稱分支函數,類似于其他語言中的分支語句,其作用是控制程序的流程。
格式
(COND(P1 e1)
(P2e2)
…
(Pnen))
其中Pi(i=1,...,n)為謂詞,ei(i=1,...,n)為一個或多個S─表達式。
功能如果P1為真,則COND函數的值為e1(當e1為多個S─表達式時,取最后一個S─表達式的值,下同)。否則,判斷P2,……直到某個Pi真為止,然后將對應的ei作為函數值。若沒有一個Pi的值為非NIL,則COND的返回值為NIL。特別地,Pi也可以為邏輯常量T,這時則對其對應的各表達式求值,并把最后一個表達式的值作為COND的返回值。
例如:
(COND((NULL x)0)
((ATOM x)1)
((LISTP x)(LENGTH x)))
其語義是,若x的值為NIL,則COND的返回值為0;若x為原子,則COND的返回值為1;若x的值為表,則COND的返回值為表的長度。
2.2.4 自定義函數
基本函數是LISP提供的基本處理功能,要用LISP編程解決實際問題,僅有基本函數還是不夠的,用戶還必須根據問題的需要,利用基本函數自定義所需的函數。
自定義函數的格式為:
(DEFUN<函數名>(<形參表>)<函數體>)其中函數體,又可能是用戶自定義的函數或LISP基本函數的某種組合。所以,一般來講,LISP自定義函數就是由其基本函數組合而成的。常用的組合方法有復和、分支、遞歸、迭代等。其中最具特色的構造方法是遞歸。
例2.1 定義求N!的LISP函數。
階乘的公式是
n!=n×(n-1)!
1!=1
0!=1
由此我們給出其LISP函數如下:
(DEFUNN!(n)
(COND((=n 0)1)
((=n 1)1)
(T(* n(N!(-n 1))))))可以看出,該函數的最后一行中又調用了它自己。所以,這個函數N!是遞歸定義的。
需說明的是,一個函數是否能遞歸定義,要取決于以下兩條:
(1)函數的求值存在最簡的情形,在這種情形下函數值是顯然的或已知的;
(2)該函數對于其參數的求值,可以歸結為對另一些參數的求值,而且后者比前者更容易求值,即使問題朝最簡情形逼近了一步。
2.2.5 程序舉例
例2.2 符號微分程序。
這里是指數學上的一元函數求導。我們用D(ex)表示數學上的de/dx,這里e為需求導的函數表達式,x為自變量。程序如下:
(DEFUND(ex)
(COND((ATOM e)(IF(Eq e x)1 0))
(T(APPLY(D-RULE(CAR e))
(APPEND(CDR e))
(LIST x)))))其中D-RULE是一個獲取給定操作符的微分規則的LISP函數。微分規則的存放,是通過為相應操作符建立d特性的方法完成的。D-RULE的定義為
(DEFUN D-RULE(operator)
(GET operator′d))其中操作符d的特性值需事先用SETF函數建立好。例如對于操作符加+和乘·,在數學上有
d(u+v)/dx=du/dx+dv/dx
d(u·v)/dx=v·du/dx+u·dv/dx
用LISP表示就是
(SETF(GET′+′D)′(LAMBDA(u v
x)′(+,(Dux),(D v x))))
(SETF(GET′*′D)′(LAMBDA(u v
x)′(+(*,(Dux),v)(*,(D v x),u)))))有了這些函數,我們就可以用機器求符號微分了。例如,給出如下的函數調用(D′(+(*2x)(*x x))′x);即求一元函數2x+x2關于x的導函數則得到返回值為
(+(+(* 0 x)(* 1 2))(+(* 1 x)(*1 x)))
即2+2x,結果正確。
由于篇幅所限,上面我們對LISP語言僅做了簡要介紹。需進一步學習的讀者,可參閱有關專門著作。實際上,以此為入門和基礎,讀者就可以參照某一具體的LISP語言資料,進行LISP程序設計了。經過30多年的發展,LISP的方言和版本也很多。目前比較流行的有INTERLISP、MACLISP、COMMONLISP。其中COMMONLISP將成為一種標準,以統一各種LISP方言。
http://www.tmdps.cn/tags/Prolog/
第三篇:概述
概述
建國以來農村社會養老
1956 年明確了關于五保的具體提法:農業生產合作社對于社內缺少勞動力,生活無依靠的鰥寡孤獨的農戶和殘廢軍人,應當在生產上和生活上給以適當的安排,做到保吃、保穿、保燒(燃料)、保教(兒童和少年)、保葬,使得這些人的生養死葬都有指靠10(《一九五六年到一九六七年全國農業發展綱要(草案)》:全國人民代表大會常務委員會,1956.)土地養老和家庭養老是廣大農民傳統的養老保障方式,且在一段時間內發揮了重要作用,但是隨著全國市場經濟體制改革的深入,工業化、城鎮化進程的加快,這兩種傳統、非正式的養老保障方式的功能正在逐漸弱化,而具有社會福利性質、正式的社會養老方式被引入,并且日益成為關系農民切身利益的大事。
以 1992 年頒布的《縣級農村社會養老保險基本方案》(試行)(以下簡稱“老 農?!保闃酥?,農村社會養老保險工作開始在農村地區廣泛推廣。據統計,截 至 1999 年年底,全國共有 31 個省、自治區、直轄市的 76%的鄉鎮開展了農村社 會養老保險工作,共有 8000 萬人次的農民參加了農村社會養老保險13。(13《1999 年勞動和社會保障統計公報》:《勞動保障通訊》,2000.)但是由于存在諸多問題,1999 年開始對其進行整頓,《國務院批轉整頓保險業工作小組保險業整頓與改革方案的通知》(國發[1999]14 號)要求農村停止接受農村社會養老保險新業務。至此,老農保工作基本處于停滯狀態。
3.新型農村社會養老保險制度以來的農村社會養老 進入 21 世紀以后,農村社會養老保險工作又被提上了日程,政府鼓勵各地積極探索建立適合本地區經濟發展的新型農村社會養老保險。2009 年國務院頒發《關于開展新型農村社會養老保險試點的指導意見》(以下簡稱“新農?!保?,決定開展新農保試點工作。當年實現覆蓋全國 10%的縣(市、區、旗),以后再逐步擴大試點范圍,最終實現在全國普遍實施,到 2020 年之前實現對農村適齡居民的全覆蓋。據人力資源和社會保障部發布的消息,截至 2012 年 10 月底,城鄉居民社會養老保險參保人數達到 4.59 億,其中 1.25 億城鄉老年居民領取養老金。2012年年末全國所有縣級行政區全面開展國家城鄉居民社會保險工作,城鄉參保人數達 4.84 億,實際領取待遇人數 1.31 億14。(人力資源和社會保障事業發展統計公報,2012 年.)人社部、財政部印發《城鄉養老保險制度銜接暫行辦法》(以下簡稱暫行辦法)是改進養老保險制度的又一重大舉措,主要是解決城鎮職工基本養老保險與城鄉居民基本養老保險制度兩大制度的銜接問題,將于 2014 年 7 月 1 日正式實施?!稌盒修k法》出臺最大收益者是農民工和城鎮非從業居民,這對于提高他們參保積極性,擴大覆蓋率有重要促進作用。長期以來,絕大部分農民工因為身份和工作流動性大的特點游離于制度之外,據人社部統計,2012 年全國農民工總量達 2.62 億人,但是同期參加職保的農民工人數僅為 4543 萬。而《暫行辦法》出臺使得廣大農民工和城鎮非從業居民進可以參加“職保”并享受待遇,退可由 城鄉居民養老保險制度“兜底”,這在一定程度上保障了弱勢群體農民工的權益?!稌盒修k法》規定優先保留待遇較高的職保,明確對參保人員重復繳費和重復領取待遇情況的處理意見。但值得注意的是,《暫行辦法》只適用于尚處于繳費期、未領取養老保險待遇的人員;已經退休或是按規定已領取養老保險待遇的不適用。隨著老齡化進程的加快,國家越來越重視對老年人的特殊照顧,出臺了各種措施從物質和精神層面加強對老年人的優待?!蛾P于進一步加強老年人優待工作的意見》要求,“政府和社會在做好公民社會保障和基本公共服務的基礎上,在醫、食、住、行、用、娛等方面,積極為老年人提供各種形式的經濟補貼、優先優惠和便利服務,不斷提升老年人生活質量”?!蛾P于進一步加強老年人優待工作的意見》明確了優待的基本對象為 60 周歲以上的老年人,各地可因地制宜,在衛生保健、交通出行、商業服務、文體休閑等方面,對常住本行政區域內的老年人給予同等優待,并根據本地實際情況,逐步拓展同等優待范圍。《中華人民共和國老年人權益保障法》規定:“家庭成員應當從關心老年人的精神需求,不得忽視、冷落老年人,尤其是與老年人分開居住的家庭成員,應當經??赐蛘邌柡蚶夏耆?,以滿足老年人的精神需求”。國家在保障老年人的物質需求基礎上也逐漸開始重視老年人的精神需求,以法律的形式在一定程度上強制規定了年輕人對老年人應盡的義務。我國人口老齡化加速發展,并且高齡化、空巢化趨勢明顯。2013 年,我國 60 歲以上老年人突破 2 億大關,達到 2.02 億 15。(《中國老齡事業發展報告(2013)》:中國社科院,2013.)
應對老齡化速度加快的挑戰,面對“未備先老”的現狀,加強社會養老服務體系建設十分必要。長期以來,黨和政府十分重視老年群體,出臺各項政策,采取措施,為老齡事業持續發展奠定了很好的基礎。
2005年民政部啟動養老服務社會化示范活動,推動老年福利服務由補缺型向適度普惠型轉變。新時期,新起點,養老服務產業面臨前所未有的發展機遇?!蛾P于加快發展養老服務業意見的通知》提出指導性意見:“發展養老服務業要按照政策引導、政府扶持、社會興辦、市場推動的原則”,“要建立公開、平等、規范的養老服務準入制度,積極支持以公建民營、民辦公助、政府補貼、購買服務等多種方式興辦養老服務業,鼓勵社會資金以獨資、合資、合作、聯營、參股等方式興辦養老服務業?!边@不僅明確了未來要建立的養老服務體系,而且引導社會力量參
與到養老服務業中來。2008 年全國老齡委辦公室、民政部等十部門聯合下發《關 于全面推進居家養老服務工作的意見》提出:“不斷加大工作力度,積極推動居 家養老服務在城市社區普遍開展,同時積極向農村社區推進。”“農村社區依托鄉 鎮敬老院、村級組織活動場所等現有設施資源,力爭 80%左右的鄉鎮擁有一處集 院舍住養和社區照料、居家養老等多種服務功能于一體的綜合性老年福利中心,1/3 左右的村委會和自然村擁有一所老年人文化活動和服務的站點。”《關于全面 推進居家養老服務工作的意見》的出臺促進了養老服務業向農村地區開展,明確 要完善養老機構并對建設標準做了具體規定。從此,各地開始紛紛出臺政策措施 促進養老服務業的發展,養老服務業邁上了快速發展的軌道?!渡鐣B老服務體 系建設規劃(2011—2015)》提出:“堅持政府主導、政策扶持、多方參與、統籌 規劃”,“初步建立起與人口老齡化進程相適應、與經濟社會發展水平相協調,以 居家為基礎、社區為依托、機構為支撐的社會養老服務體系,讓老年人安享晚年,共享經濟社會發展成果”?!秶鴦赵宏P于加快發展養老服務業的若干意見》(國發 [2013]35 號)提出,到 2020 年,全面建成以居家養老為基礎、社區為依托、機 構為支撐的功能完善、規模適度、覆蓋城鄉的養老服務體系。養老服務產品更加 豐富,市場機制不斷完善,養老服務業持續健康發展。中共十八屆三中全會通過 的《中共中央關于全面深化改革若干重大問題的決定》,強調要“加快社會事業 改革,解決好人民群眾最直接最現實的利益問題”,其中,特別強調要加快建設 社會養老服務體系,發展老年服務產業。
《中國老齡事業的發展》白皮書顯示,2006 年全國有養老院、敬老院等養
老服務機構共 39546 個,總床位 149.7 萬張。其中,民辦養老機構有 1620 多所,床位有近6 萬張。這一時期,采取深化居家養老服務,依托社區平臺,通過政府 購買服務等方式解決居家老人的養老需求。社會化的養老機構發展較快,民辦養 老機構成為養老服務的重要力量,但養老服務人員文化素質偏低,專業技能缺乏,服務意識淡薄。這在一定程度上阻礙了養老服務事業的發展。目前,我國養老服 務業取得了長足發展,養老機構數量不斷增加,服務規模不斷擴大,老年人的文化生活日益豐富,養老質量不斷提高,朝著規范化、標準化、多樣化、專業化、公共服務均等化方向努力,初步建立起養老服務體系。但是,養老機構供需矛盾突出,設施簡陋;城鄉之間、區域之間發展不平衡;政府投入有限,社會力量參與不足;服務人員專業化程度不高等問題仍然存在。
第四篇:集體合同概述
集體合同概述
題目:平等協商、簽訂和履行集體合同應當遵循、、的原則。答案:合法、公平、誠信(《江蘇省集體合同條例》第三條 P183)題目:平等協商、簽訂和履行集體合同應當遵循()的原則。
(A)公平、公正、便捷(B)合法、公平、誠信(C)合法、公平、便捷(D)公平、平等、便捷
答案:B(《江蘇省集體合同條例》第三條 P183)題目:縣級以上地方人民政府勞動和社會保障行政部門對集體合同進行()審查,依法對集體合同的簽訂和履行進行監督。(A)合法性(B)公平性(C)合理性(D)公正性
答案:A(《江蘇省集體合同條例》第六條P184)
題目:用人單位規章制度與集體合同不一致的,按照()執行。
(A)規章制度(B)集體合同(C)勞動合同(D)兩者皆可
答案:B(《江蘇省集體合同條例》第四條P184)題目:用人單位規章制度與集體合同不一致的,按照集體合同執行。答案:√(《江蘇省集體合同條例》第四條P184)題目:平等協商、簽訂和履行集體合同應當遵循公平、公正、自愿、便捷的原則。答案:×(《江蘇省集體合同條例》第三條P183)題目:下列說法正確的是()。
(A)平等協商、簽訂和履行集體合同應當遵循公平、公正、自愿、便捷的原則(B)用人單位規章制度與集體合同不一致的,按照集體合同執行
(C)縣級以上地方人民政府勞動和社會保障行政部門對集體合同進行公正性審查,依法對集體合同的簽訂和履行進行監督
(D)集體合同約定的條件、勞動報酬等標準不得低于法定標準
答案:BD(《江蘇省集體合同條例》第三-八條P183-184)題目:下列說法錯誤的是()。
(A)縣級以上地方人民政府勞動和社會保障行政部門對集體合同進行公正性審查,依法對集體合同的簽訂和履行進行監督
(B)依法簽訂的集體合同只對用人單位具有約束力
(C)用人單位與職工個人訂立的勞動合同中勞動條件、勞動報酬等標準低于集體合同約定的,按照勞動合同執行
(D)集體合同約定的條件、勞動報酬等標準不得低于法定標準
答案:ABC(《江蘇省集體合同條例》第三-八條P183-184)
B-d-044集體合同平等協商的事項
題目:集體合同平等協商的要求應當以 提出。答案:書面形式(《江蘇省集體合同條例》第九條P184)題目:用人單位與職工方提出平等協商的要求時,一方提出協商要求,另一方應當在收到要求之日起()以內書面形式予以答復,不得拒絕或者拖延。(A)十日(B)二十日(C)三十日(D)四十日
答案:B(《江蘇省集體合同條例》第九條P184)題目:集體合同平等協商的要求應當()提出。
(A)以口頭形式(B)以書面形式
(C)以口頭或者書面形式(D)以口頭和書面形式
答案:B(《江蘇省集體合同條例》第九條P184)題目:除了()以外,下列集體合同事項都可以由雙方平等協商。
(A)勞動報酬(B)工作時間
(C)工作崗位設置(D)勞動安全與衛生
答案:C(《江蘇省集體合同條例》第十條P184-185)題目:用人單位與職工方提出平等協商的要求時,一方提出協商要求,另一方應當在收到要求之日起20日以內書面形式予以答復,不得拒絕或者拖延。答案:√(《江蘇省集體合同條例》第九條)題目:集體合同平等協商的要求可以由口頭形式提出。答案:×(《江蘇省集體合同條例》第九條)題目:訂立集體合同時,雙方可以進行平等協商的事項有()。
(A)勞動報酬
(B)勞動安全與衛生(C)職業技能培訓(D)保守商業秘密
答案:ABCD(《江蘇省集體合同條例》第十條)
題目:訂立集體合同時,用人單位確定()事項,應當事先與職工進行平等協商。
(A)勞動報酬
(B)勞動合同管理(C)獎懲與裁員(D)保守商業秘密
答案:ABC(《江蘇省集體合同條例》第十條)
B-d-045集體合同平等協商的程序、人員及形式
題目:協商代表因履行職責占用工作時間的,視為。答案:提供正常勞動(《江蘇省集體合同條例》第十五條P186)題目:集體合同平等協商時,用人單位首席協商代表由()擔任。
(A)法定代表人或者主要負責人擔任(B)法定代表人指定專人擔任(C)工會主要負責人
(D)本單位以外專業人員
答案:A(《江蘇省集體合同條例》第十二條 P185)題目:集體合同平等協商時,職工方首席協商代表由()擔任。
(A)法定代表人或者主要負責人擔任(B)法定代表人指定專人擔任(C)工會主要負責人
(D)本單位以外專業人員
答案:C(《江蘇省集體合同條例》第十二條 P185)題目:集體合同平等協商時,可以聘請本單位以外的有關專業人員作為本方協商代表參加協商,但所聘人數不得超過本方協商代表的()。(A)三分之一(B)三分之二(C)五分之一(D)五分之二
答案:A(《江蘇省集體合同條例》第十二條P185)題目:協商代表在任期內,用人單位不得無故調動其工作崗位和免除職務、降低職級。答案:√(《江蘇省集體合同條例》第十五條 P186)題目:集體合同平等協商時,雙方協商代表可以相互兼任。答案:×(《江蘇省集體合同條例》第十一條 P185)題目:下列說法錯誤的是()。
(A)集體合同平等協商的代表可以相互兼任
(B)職工方協商代表不勝任、不履行職責的,可以隨時予以罷免或者撤職(C)協商代表因履行職責占用工作時間的,應當扣除相應時間的工資(D)協商會議內容應當如實記錄,記錄員由雙方協商制定
答案:ABC(《江蘇省集體合同條例》第十一-十八條P185-186)題目:下列說法正確的是()。
(A)集體合同平等協商的代表人數應當對等(B)協商代表的人氣由被代表方確定,但不得短于三年(C)集體合同平等協商的代表可以相互兼任(D)協商會議內容不需記錄
答案:AB(《江蘇省集體合同條例》第十一-十八條P185-186)
B-d-046集體合同的期限、生效、變更和終止 題目:集體合同期限不得短于 年。答案:一年(《江蘇省集體合同條例》第十九條P186)題目:集體合同期限不得短于()年。
(A)半年(B)一年(C)兩年(D)三年
答案:B(《江蘇省集體合同條例》第十九條P186)題目:集體合同簽訂后,用人單位應當在()日內將集體合同文本以及有關資料報送當地勞動保障行政部門。(A)五日(B)七日(C)十日(D)十五日
答案:C(《江蘇省集體合同條例》第二十三條P187)題目:集體合同期滿前()個月內,雙方應當協商簽訂集體合同。
(A)半個月(B)一個月(C)兩個月(D)三個月
答案:D(《江蘇省集體合同條例》第二十九條P188)題目:集體合同草案只能由雙方共同起草,任何一方都單獨不能起草。答案:×(《江蘇省集體合同條例》第十九條P186)題目:集體合同期滿前一個月內,雙方應當協商簽訂集體合同。答案:×(《江蘇省集體合同條例》第二十九條P188)題目:用人單位或者職工方可以在集體合同平等協商中提出增長工資要求的情形有()。
(A)本單位利潤增長的
(B)本單位勞動生產率提高的
(C)當地人民政府發布的工資指導線提高的(D)本地區城鎮居民消費價格指數增長的
答案:ABCD(《江蘇省集體合同條例》第二十一條P187)題目:致使集體合同部分或者全部條款無法履行的,可以變更或者解除集體合同的情形有()。
(A)訂立時所依據的法律、法規已經修改或者廢止(B)不可抗力
(C)集體合同變更或者解除條件出現(D)由一方協商代表出現變動
答案:ABC(《江蘇省集體合同條例》第二十七條P188)
B-d-047區域、行業集體合同 題目:區域、行業的集體合同適用范圍內的用人單位與本單位職工方又單獨簽訂集體合同的,其集體合同規定的勞動條件和勞動報酬等標準不得 區域、行業集體合同的規定。
答案:低于(《江蘇省集體合同條例》第三十四條p189)題目:區域、行業的集體合同適用范圍內的用人單位與本單位職工方又單獨簽訂集體合同的,其集體合同規定的勞動條件和勞動報酬等標準()區域、行業集體合同的規定。(A)不得低于(B)可低于
(C)不得等同于(D)等同于
答案:A(《江蘇省集體合同條例》第三十四條p189)
題目:尚未建立區域、行業職工代表大會的,集體合同草案應當得到區域、行業內()以上職工的同意。(A)三分之一(B)三分之二(C)半數
(D)五分之一
答案:C(《江蘇省集體合同條例》第三十三條p189)
題目:區域、行業的集體合同草案應當提交()討論通過。
(A)區域、行業職工代表大會(B)勞動保障行政部門(C)區域、行業協會(D)用人單位
答案:A(《江蘇省集體合同條例》第三十三條p189)
題目:區域、行業的集體合同草案應當提交區域、行業職工代表大會 討論通過。答案:√(《江蘇省集體合同條例》第三十三條p189)題目:通過的集體合同只能由雙方首席協商代表簽字。答案:×(《江蘇省集體合同條例》第三十三條p189)題目:下列關于區域、行業集體合同表述正確的是()。
(A)區域、行業的集體合同適用范圍內的用人單位與本單位職工方又單獨簽訂集體合同的,其集體合同規定的勞動條件和勞動報酬等標準不得低于區域、行業集體合同的規定
(B)區域、行業的集體合同草案應當提交區域、行業職工代表大會討論通過(C)通過的集體合同只能由雙方首席協商代表簽字
(D)尚未建立區域、行業職工代表大會的,集體合同草案應當得到區域、行業內全體職工的同意
答案:AB(《江蘇省集體合同條例》第三十三條、第三十四條p189)題目:下列關于區域、行業集體合同表述錯誤的是()。
(A)區域、行業的集體合同適用范圍內的用人單位與本單位職工方又單獨簽訂集體合同的,其集體合同規定的勞動條件和勞動報酬等標準可以低于區域、行業集體合同的規定
(B)區域、行業的集體合同草案雙方協商同意即可通過(C)通過的集體合同只能由雙方首席協商代表簽字
(D)尚未建立區域、行業職工代表大會的,集體合同草案應當得到區域、行業內全體職工的同意
答案:ABCD(《江蘇省集體合同條例》第三十三條、第三十四條p189)
B-d-048集體合同爭議處理和法律責任
題目:勞動保障行政部門處理平等協商和簽訂集體合同中發生的爭議,應當自受理之日起
日內處理結束,有特殊情況需要延長的,由勞動保障行政部門負責人批轉可以延長 日。
答案:三十 十五(《江蘇省集體合同條例》第三十六條 P189)題目:因履行集體合同發生爭議,雙方應當協商解決;協商不成的,任何一方可以向勞動爭議仲裁委員會申請仲裁;對仲裁不服的,可以自收到仲裁裁決書之日起()日內向人民法院提起訴訟。(A)5(B)10(C)15(D)20 答案:C(《江蘇省集體合同條例》第三十七條P190)題目:違反《江蘇省集體合同條例》相關規定,協商代表因履行職責被扣發、降低工資和福利的,由勞動保障行政部門責令用人單位支付其工資、福利,并可以責令按應得工資、福利總和的()標準支付賠償金。(A)百分之五十以上一倍以下(B)一倍以上三倍以下(C)兩倍
(D)三倍以上五倍以下
答案:A(《江蘇省集體合同條例》第三十七條P190)題目:協調處理集體協商爭議,應當自受理協調處理申請之日起()日內結束協調處理工作;期滿未結束的,可以適當延長協調期限,但最長期限不得()日。(A)30日 15日(B)60日 30日(C)30日 30日(D)60日 15日
答案:A(《江蘇省集體合同條例》第三十六條P189)題目:勞動保障行政部門處理平等協商和簽訂集體合同中發生的爭議,應當自受理之日起三十個工作日內處理結束,有特殊情況需要延長的,由勞動保障行政部門負責人批轉可以延長十五個工作日。
答案:×(《江蘇省集體合同條例》第三十六條P189)題目:違反《江蘇省集體合同條例》相關規定,協商代表因履行職責被扣發、降低工資和福利的,由勞動保障行政部門責令用人單位支付其工資、福利,并可以責令按應得工資、福利總和的一倍以上三倍以下的標準支付賠償金。
答案:×(《江蘇省集體合同條例》第三十九條P190)題目:協調處理集體協商爭議應當按照的程序是()。
(A)受理協調處理申請(B)調查了解爭議的情況
(C)研究制定協調處理爭議的方案
(D)對爭議進行協調處理,并制作《協調處理協議書》
答案:ABCD(p190-191)
題目:平等協商和簽訂集體合同發生的爭議包括()。
(A)對協商代表資格有異議的
(B)對集體合同約定的勞動條件、勞動報酬等標準有異議的(C)對協商和簽訂集體合同的程序有異議的
(D)在協商和簽訂集體合同過程中發生的其他爭議的
答案:ABCD(《江蘇省集體合同條例》第三十九條P189)
B-d-049集體合同特別規定
題目:勞動保障行政部門對集體合同或專項集體合同有異議的,應當自收到文本之 日起日內將《審查意見書》送達雙方協商代表。
答案:15(《江蘇省集體合同條例》第二十三條p187)
題目:勞動保障行政部門對集體合同或專項集體合同有異議的,應當自收到文本之日起()日內將《審查意見書》送達雙方協商代表。(A)5(B)10(C)15(D)20 答案:C(《江蘇省集體合同條例》第二十三條p187)題目:集體合同或專項集體合同在()情況下終止。
(A)期滿或雙方約定的終止條件出現(B)協商一致
(C)上級工會要求(D)任何時候
答案:A(《江蘇省集體合同條例》第二十三條p186)題目:協商代表履行職責的期限由()確定。
(A)被代表方(B)雙方協商(C)上級工會(D)用人單位
答案:A(《江蘇省集體合同條例》第十一條p185)
題目:集體合同平等協商的首席代表不可以由非本單位人員代理。答案:√(《江蘇省集體合同條例》第十二條p185)
題目:集體合同平等協商的首席代表可以由非本單位人員代理。答案:×(《江蘇省集體合同條例》第十二條p185)題目:集體合同《審查意見書》應當載明的內容有()。
(A)集體合同或專項集體合同當事人雙方的名稱、地址
(B)勞動保障行政部門收到集體合同或專項集體合同的時間(C)審查意見
(D)作出審查意見的時間 答案:ABCD(p148-149, p186-191)
題目:集體合同平等協商代表在協商前應做()準備工作。
(A)熟悉與集體協商內容有關的法律、法規、規章和制度
(B)了解與集體協商內容有關的情況和資料,收集用人單位和職工對協商意向所持的意見
(C)擬定集體協商議題,集體協商議題可由提出協商一方起草,也可由雙方指派代表共同起草
(D)確定集體協商的時間、地點等事項;共同確定一名非協商代表擔任集體協商記錄員
答案:ABCD(p148-149, p186-191)
B-e-050農民工就業服務
題目:農民工就業所在地政府及其教育行政部門應當按照“______、______”的原則,采取多種形式,安排農民工適齡子女接受義務教育。
答案:流入地政府負責、公辦學校吸納為主 P199 第二章 就業服務第十條
題目:勞動爭議仲裁機構對農民工申訴的勞動爭議案件,應當加快審理、及時裁決,涉及勞動報酬、()的應當優先審理。(A)保險待遇
(B)加班加點工資支付(C)休息休假(D)勞動保護
答案:A P199 第二章 就業服務第十條
題目:勞動和社會保障行政部門和有關行政主管部門應當加強勞務輸出工作機構和信息網絡的建設,為農民工提供及時準確的信息服務,做好勞務輸出的組織協調工作,提高勞務輸出的()程度。(A)規范化(B)組織化(C)專業化(D)制度化
答案:B P198 第二章 就業服務第七條
題目:各類職業介紹機構為農民工提供免費職業介紹的,按照國家和省有關規定享受()。
(A)津貼(B)補貼
(C)優惠政策(D)獎勵
答案:B P198 第二章 就業服務第八條
題目:勞動爭議仲裁機構對農民工申訴的勞動爭議案件,應當加快審理、及時裁決,涉及勞動報酬、保險待遇的應當優先審理。
答案:√
P199 第二章 就業服務第十一條
題目:安全生產監督管理、衛生等有關行政主管部門依法做好農民工安全生產和疾病防治工作,衛生部門應當將農民工隨帶子女免疫工作納入當地免疫計劃。
答案:√
P198 第二章 就業服務第九條
題目:公共就業服務機構應當為農民工免費提供()、()、()和()服務。
(A)就業信息(B)政策咨詢(C)技能培訓(D)職業指導(E)職業介紹
答案:ABDE P198 第二章 就業服務第八條
題目:地方各級人民政府應當組織開展農村勞動力轉移就業技能、安全技能培訓和引導性培訓,在財政支出中安排專項經費重點用于扶持農村勞動力就業技能和安全技能培訓工作,制定和落實以培訓促就業的()、()和()措施。(A)保障(B)補貼(C)激勵(D)獎勵
答案:BCD P198第二章 就業服務第六條
B-e-051農民工工資、保險權益保護
題目:用人單位支付農民工的工資不得低于______。答案:當地最低工資標準 P199 第三章 第十二條
題目:安全生產監督管理、建設部門應當將用人單位參加工傷保險和農民經安全生產教育、培訓合格作為發放《 》的必備條件。(A)從業資格證(B)培訓上崗證
(C)安全生產許可證(D)營業資格證
答案:C P200 第三章 第十六條
題目:勞務派遣組織向用人單位派遣農民工的,由()和()按照勞務派遣組織所在地社會保險的有關規定參加社會保險,繳納社會保險費。(A)勞務派遣組織、用人單位(B)勞務派遣組織、農民工(C)用人單位(D)農民工
答案: B P200 第三章 第十四條
題目:除實行小時、日、周工資制的用人單位外,其他用人單位應當()向農民工支付工資。用人單位不得無故克扣或者拖欠農民工工資。
(A)每半年(B)每年
(C)約定的工作完成后(D)每月
答案:D P199 第三章 第十二條
題目:對餐飲行業和農民工集中的用人單位推進《勞動計酬手冊》制度,對其工資支付情況實施監控。
答案:×
對建設領域和農民工集中的用人單位推進《勞動計酬手冊》制度,對其工資支付情況實施監控。
P199 第三章 第十三條
題目:用人單位一般不得延長農民工工作時間,確因生產經營需要延長農民工工資時間或者在休息日、休假日安排農民工工作的,按照法定程序進行,并依法支付加班工資。
答案:×
用人單位一般不得延長農民工工作時間,確因生產經營需要延長農民工工資時間或者在休息日、休假日安排農民工工作的,按照法定程序進行,并依法支付加班工資或者安排補休。P202 第三章 第二十五條
題目:用人單位工資分配應當遵循()的原則,實行();工資支付應當遵循()的原則,按時以()形式足額支付。(A)按勞分配(B)同工同酬(C)誠實信用(D)貨幣
答案:ABCD P199 第三章 第十二條
題目:建立農民工()和()制度。
(A)工資保證金(B)工傷保險
(C)工資支付重點監控(D)失業保險
答案:AC P199 第三章 第十三條
B-e-052農民工權益保障及法律責任
題目:用人單位使用農民工,不得違反規定向農民工收取或者變相收取______、______及其他不合理費用,不得扣押農民工個人身份證。
答案:保證金、抵押金 P201 第四章 第二十一條
題目:用人單位無故克扣或者拖欠農民工工資報酬的,由勞動保障行政部門責令改正,逾期不改正的,責令用人單位按照應付金額()以下標準,向農民工加付賠償金。(A)30%以上-50%(B)50%以上-100%(C)20%以上-30%(D)100%以上-200% 答案:B P203 第六章 第二十一條
題目:《江蘇省農民工權益保護辦法》自()起施行。
(A)2009年5月1日(B)2007年7月1日(C)2008年5月1日(D)2010年3月1日
答案:C P204 第六章 第三十七條
題目:支持和鼓勵農民工自愿和依法()轉讓承包集體土地的使用權。
(A)有償(B)無償(C)直接(D)間接
答案:A P202 第五章 第二十九條
題目:嚴禁任何單位已培訓為名向農民工非法收取費用。答案:√
P202 第四章 第二十四條
題目:學校違反規定向農民工子女收取費用的,有監察、價格、教育等部門責令整改限期改正,逾期不改正的,對學校負責人和直接責任人給予處分。
答案:√ P203 第六章 第三十二條
題目:用人單位應當依法與農民工訂立書面勞動合同,勞動合同的訂立應遵循______、______的原則。
(A)公平公正(B)平等自愿(C)誠實信用(D)協商一致
答案:BD P201 第四章 第二十二條
題目:行政機關及其工作人員有下列行為之一的,由本級人民政府或者上級行政主管部門、監察機關給予行政處分:()
(A)干預用人單位自主依法使用農民工的;
(B)向農民工或者使用農民工的單位非法收取費用的;(C)不履行職責知識農民工合法權益收到損害的;(D)侵害農民工人身、財產權利的
答案:ABCD P204 第六章 第三十六條
B-f-053工會組織概述
題目:工會各級組織按照______的原則建立。答案:民主集中制 P206 第二章 第九條
題目:全國人民代表大會常務委員會《關于修改<中華人民共和國工會法>的決定》自()起施行。
(A)1992年4月3日(B)2001年10月27日(C)1950年6月28日(D)1995年1月1日
答案:B P205 第一章 總則前言
題目:工會是職工()的工人階級的群眾組織。
(A)自愿結合(B)自愿組建(C)依法成立(D)依法組建
答案:A P205 第一章 總則
題目:企業、事業單位、機關有會員()以上的,應當建立基層工會委員會。
(A)25人以上(B)40人以上(C)15人以上(D)30人以上
答案:A P206 第二章 第十條
題目:基層工會委員會每屆任期2年或者3年。答案:× P207 第二章 第十條
基層工會委員會每屆任期3年或者5年。
題目:經基層工會委員會或者二分之一以上工會會員提議,可以臨時召開會員大會或者會員代表大會。
答案:× P207 第二章 第十六條
經基層工會委員會或者三分之一以上工會會員提議,可以臨時召開會員大會或者會員代表大會。題目:()、()、()具有社會團體法人資格。
(A)中華全國總工會(B)地方總工會(C)基層工會(D)產業工會 答案:ABD P207 第二章 第十四條 題目:()、(),可以建立基層工會聯合會。
(A)企業職工較多的鄉鎮(B)社區
(C)城市街道(D)村
答案:AC P207 第二章 第十條
B-f-054工會權利和義務
題目:企業、事業單位違反職工代表大會制度和其他民主管理制度,工會有權要求糾正,保障職工依法行使______的權利。
答案:民主管理 題目:()可以為所屬工會和職工提供法律服務。
(A)市級以上各級總工會(B)縣級以上各級總工會(C)地方各級總工會(D)全國總工會
答案:B P208 第三章 第十九條
題目:建立工會組織的企業、事業單位、機關案每月全部職工工資總額的()向工會撥繳的經費。(A)1%(B)5%(C)3%(D)2% 答案:D P212 第五章 第四十二條
題目:罷免工會主席、副主席必須召開會員大會或者會員代表大會討論,非經會員大會全體人員或者會員代表大會全體代表過()通過,不得罷免。(A)三分之一(B)四分之一(C)二分之一(D)三分之二
答案:C P208 第二章 第十七條
題目:縣級以上各級人民政府以及有關部門研究制定勞動就業、工資、勞動安全衛生、社會保險等涉及職工切身利益的政策、措施時,應當吸收上級工會參加研究,聽取工會意見。
答案:× P210 第三章 第三十三條
縣級以上各級人民政府以及有關部門研究制定勞動就業、工資、勞動安全衛生、社會保險等涉及職工切身利益的政策、措施時,應當吸收同級工會參加研究,聽取工會意見。題目:各級人民政府勞動行政部門應當會同同級工會和企業方面代表,建立勞動關系三方協商機制,共同研究解決勞動關系方面的重大問題。
答案:√
P210 第三章
第三十四條
題目:企業、事業單位違反勞動法律、法規規定,有下列侵犯職工勞動權益情形的(),工會代表應當代表職工與企業、事業單位交涉,要求企業、事業單位采取措施予以改正。(A)克扣職工工資的;
(B)不提供勞動安全衛生條件的;(C)隨意延長勞動時間的;
(D)侵犯女職工和未成年工特殊權益的;(E)其他嚴重侵犯職工勞動權益的。
答案:ABCDE P209 第三章 第二十二條 題目:工會應當根據經費獨立原則、建立()、()和()監督制度。
(A)測算(B)預算;(C)決算;
(D)經費審查;
答案:BCD P212 第五章 第四十四條
B-f-055違反工會法的法律責任 題目:工會對違反本法規定侵犯其合法權益的,有權提請______或者有關部門予以處理,或者向______。
答案:人民政府、人民法院提起訴訟 P212 第六章 第四十九條
題目:職工因參加工會活動而被解除勞動合同的,由勞動行政部門責令恢復其工作,并補發被解除勞動合同期間應得的報酬或者責令給予()的賠償。
(A)本人年收入2倍(B)本人月收入2倍(C)本人年收入3-5倍(D)本人月收入3-5倍
答案:A P213 第六章 第五十二條 題目:工會參加企業的勞動爭議()。
(A)調解工作(B)處理(C)仲裁(D)協調
答案:A P210 第三章 第二十八條
題目:企業、事業單位無正當理由()工會經費,基層工會或者上級工會可以向當地人民法院申請();拒不執行支付令的,工會可以依法申請人民法院()。(A)拖延或者拒不撥繳,支付令,強制執行(B)拖延或者拒不撥繳,強制征繳,強制執行(C)不繳或者拒不繳納,支付令,強制劃撥(D)拖延或者拒不撥繳,支付令,強制劃撥
答案:A P212 第五章 第四十三條
題目:工會工作人員違反法律規定,損害職工或者工會權益的,由上級工會責令改正,或者予以行政處分;情節嚴重的,依照《中國工會章程》予以罷免。
答案:× P213 第六章 第五十五條 工會工作人員違反法律規定,損害職工或者工會權益的,由同級工會或者上級工會責令改正,或者予以行政處分;情節嚴重的,依照《中國工會章程》予以罷免。
題目:阻撓職工依法參加和組織工會或者阻撓上級工會幫助、指導職工籌建工會的,由勞動行政部門責令其改正;拒不改正的,由勞動行政部門提請縣級以上人民政府處理。
答案:√ P213 第六章 第五十條
題目:違反法律規定,有下列情形之一的(),由縣級以上人民政府責令改正,依法處理。
(A)妨礙工會組織職工通過職代會和其他形式依法行使民主權利的;(B)非法撤銷、合并工會組織的
(C)妨礙工會參加職工因工傷亡事故以及其他侵犯職工合法利益問題調查處理的
(D)無正當理由拒絕進行平等協商的
答案:ABCD P213 第六章 第五十三條 題目:工會的財產、經費和國家撥給工會使用的不動產,任何組織和個人不得()、()和()。
(A)侵占(B)挪用
(C)任意調撥(D)處置
答案:ABC P212 第五章 第四十六條
第五篇:人才市場概述
中國廣西人才市場 員工培訓講義
(一)第一講
人 才 市 場 概 述
馬 昌 定
一、人才市場的含義、產生、特點
(一)含義
從廣義上說,人才市場是遵循市場規律調節人才供求的一種機制。人才、用人單位、人才中介服務機構、管理機構、人才交流場所(設施)等都是人才市場組成的重要因素。狹義地說,人才市場是指交換人才勞動能力的場所,是為人才個體和人才使用單位雙向選擇(買賣)提供條件和服務的機構。由于體制上的原因,目前我國存在著人才市場和勞動力市場以及高校畢業生就業市場。人才市場服務的主要對象,傳統的做法為,各類使用人才的單位和具有中專以上學歷或取得專業技術職稱資格的人員,以及其它從事專業技術工作或管理工作的人員、各類能工巧匠。科學的人才觀認為,人才存在于人民群眾之中。只要具有一定的知識或技能,能夠進行創造性勞動,為推動社會主義物質文明、政治文明、精神文明建設,在建設中國特色社會主義偉大事業中作出積極貢獻,都是黨和國家需要的人才。要堅持德才兼備原則,把品德、知識、能力和業績作為衡量人才的主要標準,不唯學歷、不唯職稱、不唯資歷、不唯身份,不拘一格選人才。鼓勵人人都做貢獻,人人都能成才。
(二)人才市場的產生和形成
1、人才市場產生和形成的前提條件(1)人才供求雙方具有相對獨立性。即人才具有獨立支配自己勞動能力的權利,使用人才的單位有用人自主權;
(2)有服務于人才“買賣”雙方的中介條件。包括機構、場所、設施(網上人才市場則以網絡為載體)。
(3)工資成了人才的市場價格,由人才市場供求關系調節。
2、人才市場形成的現實基礎
(1)培育和發展人才市場是社會主義市場經濟發展的客觀要求。建立和完善社會主義市場經濟就是要充分發揮市場在社會資源配置中的基礎性作用。人才資源作為重要的資源,在市場經濟條件下,必須通過市場來配置。因此,建立社會主義市場經濟體制,必須發展完善人才市場。
(2)培育和發展人才市場是勞動人事制度改革和畢業生就業制度改革的必然結果。在計劃經濟條件下,勞動力和人才資源的配置都是通過行政計劃完成的,大、中專院校的畢業生,由國家通過指令性計劃分配工作。隨著經濟體制改革的深入,勞動人事制度和大中專畢業生就業制度也必須改革,要打破人才資源計劃配置和畢業生統包統配的體制和機制,必須建立市場配置體制和機制,人才市場就應運即生。
(三)人才市場的特點
1、我國人才市場與國外的人才市場比較,其主要特點:
(1)我國的人才市場是政府培育的,不是自發形成的。因此,我國人才市場從功能、機制、服務范圍、對象到市場的場所(設施)機構受政府行為的影響很大。
(2)目前情況下,人才中介機構是我國人才市場的表現形態。因為我 國人才市場是由政府建立的,在起步階段,由政府人事行政部門分割一部分職能,交由其所屬的人才中介服務機構來行使,而人才中介機構又基本上是通過市場機制來運作,由此培育人才市場。這就形成了當前的情況,即不是人才中介機構以業已存在的人才市場為依托,而是人才市場憑借人才中介機構而存在。可以說,我國目前的人才市場是通過人才中介機構而獲得了存在的形態的,這也使得人才中介機構成為了人才市場的具體組織形式和運行方式。
2、人才市場與一般的商品市場、生產要素市場相比,除了具有開放性、競爭性、等價交換性等共性以外,還有其自身的特殊性。表現為:(1)人才市場上的“商品”(人才)交換、價格(工資)不是成交與否的唯一因素。不同的人才有不同的追求,有的人才將工作環境、發展前景、人際關系等等作為是否成交的重要條件,而其它商品市場,商品能否成交,主要是取決于價格是否合適。
(2)人才市場中“商品”(人才)使用價值的非顯現性。一般商品的使用價值,購買者大都通過眼看、手摸、閱讀商品介紹或度量,就可以得到比較準確的判斷。而人才的使用價值,憑簡單的物理觀察、度量是很難判斷的,必須進行科學的測評。
(3)人才市場上“商品”(人才)的儲存、陳列上的信息替代性。一般商品市場必須陳列儲存有商品實物供買方察看、購買,而人才市場的“商品”可以通過文字信息陳列、儲存,買賣雙方可以通過了解信息來選擇??梢哉f,人才市場的商品主要就是信息。中介機構主要通過提供信息為買賣雙方服務、促進交易。(4)人才市場上的“商品”(人才)具有情緒性。他們講究尊嚴、講究平等。他們對市場服務的要求,軟件重于硬件。
(四)人才中介機構
1、人才中介機構的性質。中介組織也叫非政府組織、非營利組織。社會中介組織是介于政府與社會之間,依法從事獨立和專門的社會活動,從而具有特定功能的共同體。在市場經濟中,存在著大量的這種經濟性中介組織(也叫市場中介組織),諸如各種行業協會、聯合會、商會、會計師審計師事務所、資產評估機構、資信評估機構、工程監理機構、商標事務所以及各種中介交易機構(房地產交易所、證券交易所、期貨交易所、技術成果交流中心、產權交易中心等)。人才中介機構也是其中一個重要的中介組織。2001年9月,國家人事部和國家工商行政管理總局頒布的《人才市場管理規定》明確:“人才中介服務機構是指為用人單位和人才提供中介服務及其他相關服務的專營或兼營的組織。”
2、人才中介機構的產生。一是市場需要。人才個體和用人單位要實現合理選擇、組合,必須有中介機構為其提供中介服務(重要是信息服務);二是政府需要,在市場經濟條件下,政府對社會人才資源的管理需要從微觀走向宏觀,從直接走向間接,它就需要一種具有一定的社會整合能力與市場調控能力的人才中介組織??梢哉f,人才中介機構它具有獨立的社會地位,即處于社會中間層,占據人才資源的公共事務領域,擁有客觀的合法的活動空間。
3、人才中介機構的特征
(1)獨立性。人才中介機構既非隸屬于政府的純行政機構,也非屬于 企業性質的經濟組織或經營管理組織,而是能夠獨立承擔民事法律責任的社會法人組織。
(2)中介性。它屬于政府與社會之間,將政府與社會有機聯系起來,成為重要的中間環節與功能性的交流渠道,是社會整合的調節器。
(3)公共性。它的行為結果是公益性的,它存在的基礎是政府與社會的公共需求。
(4)服務性。人才中介機構既服務于政府的公共管理需要,也服務于人才資源的市場配置。
(5)公正性。人才中介機構的地位要求它必須依法公正地發揮功能,遵守自己的行業準則,公平合理地居間服務。
目前我區政府人事部門所屬的人才交流服務機構,還不是完整意義上的人才中介組織。一是職能上,它們或多或少還根據政府的授權在行使行政管理職能和人事公共服務職能,特別是縣市一級的人才交流服務機構,很大程度上還是政事不分。二是經費來源上,基本上還是財政撥付。從發展來看,必然要實行政事分開,成為真正意義上的人才中介組織。
二、人才市場的地位和作用
(一)地位
1、人才市場是社會主義市場體系的重要組成部分。發展人才市場,是建立和完善社會主義市場經濟體制的重要內容。要建立和完善社會主義市場經濟體制,離不開完善的市場體系。完善的市場體系要求市場層次完整、相互聯系、相互制約、運轉自如?,F代市場可分為商品市場、生產要素市場兩個方面。商品市場包括生活資料市場和生產資料市場;生產要素市場包括資 本市場、勞動力市場、人才市場、技術市場、信息市場和房地產市場??梢哉f,沒有人才市場,市場體系是不完整的。
2、現代社會,科學技術日新月異,人才資源成為了第一資源。人才市場在市場體系中的地位越來越重要。
(二)人才市場(人才中介服務機構)的作用
1、配置人才資源。在市場經濟條件下,人才市場在人才資源配置中發揮基礎性作用。目前,我國的人才資源的市場配置,重要是通過人才中介服務機構完成的。通常是人才中介機構向社會發布人才供求信息,將供求兩個主體聯系起來,服務雙方的選擇和人才資源的配置。
2、反映人才供求。市場經濟條件下,人才市場是反映社會人才供求狀況的最有效途徑。國家人事部從去年開始,定期公布全國重點城市和地區人才供求狀況,都是由當地的人才市場提供數據。這種反映,一方面影響人才供求雙方的選擇,指導人才的流動;另一方面,引導人才的培養。許多人才培養機構都根據人才市場的供求信息確定培養規模和種類。
3、引導人才消費。人才市場的供求雙方,大部分對人才市場的整個形式不很了解,很難科學合理地確定其人才消費的定位。有些用人單位對哪些崗位究竟選擇什么樣的人才最合適,并不很清楚;有的人才對自己究竟最適合什么樣的職位也不一定很明確。這就需要我們人才市場的專家、顧問為他們提供咨詢和指導服務。
4、評價人才素質。目前,許多的人才中介服務機構都開展了人才素質測評業務。人才素質測評是根據一定的目的,綜合運用定量與定性的多種方法,對人才的德、智、能、績進行客觀、準確評價的一種社會活動???學的人才測評,一是能對被測評者的素質作出客觀鑒定;二是對被測評者的潛在素質進行預測。這種鑒定和預測就能更準確地認識人才,更科學地配置和使用人才,實現職位與人才的最佳匹配。
5、保障人才流動。目前,我們人才中介服務機構開展的人才代理業務,特別是我們政府人事部門所屬的人才交流服務機構,根據政府的授權開展的流動人員人事檔案管理以及與此相關的諸如身份認定、工齡計算、職稱考評、戶籍管理、黨團組織關系管理,社會保險代辦等等業務,有效地解除了人才流動的后顧之憂,保障了人才的流動。人才派遣業務,既有利于人才的合理配置,也能有效地保障人才流動。
6、提升人才“內存”。人才市場根據市場經濟發展的要求和人才本身的需求,開展培訓業務,能使人才在離開學校以后,不斷地更新知識和增加新知識,新技能,這對于開發人才資源,提升人才素質發揮了極其重要的作用。
三、人才市場的現狀
(一)人才市場發展面臨的形勢
1、黨中央、國務院、自治區黨委和政府都高度重視人才和人才市場的發展,人才市場逐步被社會認同;
2、改革的深入,將加速人才資源配置市場化進程,創造有利于人才市場發展的體制環境,特別是勞動人事制度改革和畢業生就業制度改革的深化,直接推動人才市場的發展;
3、經濟全球化和區域一體化的趨勢,使人才市場的發展具有更加廣闊的前景。國際化的人才流動和世界范圍的人才配置已成為可能。我國加入 世貿組織以后,特別是中國——東盟自由貿易區的建立,國際合作的人力資源開發已提上了議程。
4、人才市場的競爭越來越激烈。首先是我國入世以后,面臨著國(境)外人才中介服務機構的競爭,我們當前的市場機制不健全、規模不大、層次不高、服務粗放,與他們競爭處于很不利的地位。其次,在國內也面臨著勞動力市場和畢業生就業市場的競爭。
(二)我國的人才服務業經過十多年的發展已取得較大的成績。主要表現為:
1、人才交流服務機構穩步發展,人才市場的體系框架已基本形成。從種類上分,有區域性人才市場、專業性人才市場和基礎性人才市場;從層次上分,既有國家級的,也有省、地級的,還有縣、區級的;從存在形態上分,既有集市型的人才市場,又有網上人才市場。截止2003年底,全國共有人才交流服務機構4653家,從業人員28095人,掛牌的人才市場3305家,其中國家級人才市場30家。我區截止2004年底,共有人才流動服務機構104個,掛牌的人才市場96個,其中國家級人才市場兩個。
2、人才市場在人才資源配置中的基礎性作用不斷增強。2003年,全國共舉辦人才交流大會49490多場次,參會人才2198多萬人次,參會單位1900萬余家,達成流動協議的590多萬人。各級人事部門人才交流服務機構接待流動人員2380多萬人次,登記流動的1296萬余人次,實現流動的有445萬多人。我區2003年政府人事部門所屬的人才流動服務機構(人才市場)共舉辦人才交流會730多場次,進場招聘人才的單位1.7萬多家,共接待各類要求流動和求職的人員71萬多人次,其中實現就業和達成流動意向協議 的有14.2萬多人。
3、人才社會化服務的內容不斷擴大,工作水平不斷提高。2003年,全國人才服務機構共為46萬多家單位代理人事業務,為260多萬人提供了人事代理服務,舉辦各種培訓班21000多場次,為190萬多人提供了短期培訓和學歷教育培訓;全國共為人才信息計算機數據庫28700多個,年訪問量達到8.5億多次。2003年,我區的人才服務機構共為1700多個用人單位提供了人事代理服務,年底累計代管流動人員檔案22.3萬多份。人才培訓、人才測評、人才租賃、就業指導等業務也有較大發展。
(三)人才市場發展中存在的主要困難和問題
1、市場主體尚未完全到位;
2、基礎設施較差。有的地方沒有場所,有些地方連基本的服務設施都沒有;
3、市場功能不完善。如人才評價、咨詢指導、市場信息的處理、人才培訓、人才流動保障服務等方面的功能尚不完善;
4、機制不健全。市場的供求、價格、競爭等機制,有的未形成,有的不健全;
5、從業人員的素質較低,服務質量不高;
6、管理不規范,法制不健全。
四、人才市場的發展
中央確定我國人才市場發展的目標是:建立和完善機制健全、運行規范、服務周到、指導監督有力的人才市場體系。具體地說,就是遵循市場發展規律,健全與其他要素市場相貫通的人才市場運行機制,主要包括供求機制,競爭機制和價格機制;加強客觀調空與監管,建立與社會主義市 場經濟體制相適應的比較完善的人才市場管理體制;按照法制建設要求,營造公平透明,競爭有序,規范運作,恪守誠信的市場環境;健全以市場需求為導向,與政府公共服務相配套的專業化、信息化、產業化、國際化人才市場服務體系。
(一)發展人才市場的意義
1、發展人才市場是實施人才強國戰略的重要內容。實施人才強國戰略的一項重要內容就是優化人才資源配置,充分發揮人才的作用。而發展和完善人才市場是優化人才結構,合理配置人才的重要基礎和有效途徑。所以說,實施人才強國戰略,實現人才的合理流動、合理配置、合理使用,必須發展人才市場。
2、有利于完善社會主義市場體系。前面說過,沒有完善的人才市場,社會主義市場體系是不完整的,人才市場的滯后會影響整個社會資源的優化配制和經濟體制改革深化。
3、有利于優秀人才的脫穎而出。人才市場貫徹公開、平等、競爭、擇優的原則,能有效地避免計劃體制下人才選拔配置任用上的諸多弊端,為優秀人才的脫穎而出創造良好的社會氛圍。
4、作為我們廣西這樣人才缺乏的后發達地區,發展人才市場是開發人才資源最有效的途徑。目前,我們廣西的人才狀況是總量不足,布局不合理,有的地方大量積壓人才,有的地方則非常缺乏人才?,F階段要解決人才匱乏的問題,當然要培養人才,但培養人才周期較長,遠水難解近渴;引進人才,我們又缺乏發達地區的優厚條件,競爭不過人家。只有完善人才市場,盤活區內的人才,實現人才都能人盡其才、才盡其用,是開發人才資源最有效的途徑。
5、有利于迎接國(境)外人才中介服務機構的挑戰。我國加入世貿組織以后,人才服務業也要對外開放。一些國(境)外的人才中介機構正瞄準我國這一市場,如果我們自己在這方面不發展的話,不僅人才中介服務業的市場被人家占領了,而且我們許多優秀的人才也會隨之外流。
(二)發展人才市場的措施
1、提高認識,增強發展人才市場的責任感和緊迫感。培育和發展人才市場是政府賦予人事部門的職責,人才交流服務機構作為具體承擔這項工作的機構,責無旁貸。從目前的形勢看,我區人才市場的發展已落后于經濟社會發展要求,與兄弟省、市比較差距也較大,區外、國外的機構意欲搶占我區的市場。另外,從我們人事部門自身的發展來看,人才市場是我門為經濟建設服務的重要陣地。必須搶占機遇、加快發展。
2、深化改革、排除壁壘,推進市場主體到位,創造有利于市場發展的體制環境,完善人才市場機制。當前主要是深化勞動人事制度、社會保障制度和戶籍管理制度改革,使用人單位和人才都通過市場機制實現合理配置。
3、完善人才市場服務網絡。一是辦好基礎性人才市場,提高市場覆蓋率;二是推動國家級人才市場的發展,充分發揮國家級人才市場的輻射、帶動、示范作用;三是大力發展企業經營管理人才和高新技術人才等專業性人才市場,滿足高層次人才開發的需要;四是發展農村人才市場,為農村人才的發展和技術交流提供服務。
4、完善市場功能。一是人才中介。包括現場中介、網上中介、委托中介;二是人才流動保障。目前就是我們開展的以人事管理(檔案)管理為主要內容的及其相關的服務;三是人事代理服務。包括人事診斷、策劃設計、管理咨詢和人事事務的代管代辦(人事外包);四是人才派遣服務;五是人才培訓;六是職業指導;七是人才測評;八是人才信息服務。我們要通過創造性的工作,不斷拓展服務范圍和領域,不斷創新服務的內容和方式。
5、人才服務機構內部應建立有利于自身發展的管理體制和內部運行機制。人才服務機構的工作性質、對象、范圍和方式與政府機關是有根本區別的。其管理體制和運行機制,必須切合實際,有利于促進自身的發展。
6、提高從業人員的素質,推動才中介服務機構能力建設。當前人才市場的發展,領導重視,社會認同,客觀需要,能否發展起來,關鍵在人,在于從事這項工作的人。從事這項工作的同志,除了政治上可靠以外,要有開創創新的意識,發奮進取的精神,還要精通業務。人才中介服務機構的工作人員必須是人才專家、人才顧問。因此,我們一定要選好人,同時加強培訓,不斷提高其素質,要努力提高人才中介服務機構的業務開發能力和經營水平。
7、提高服務質量。一是樹立質量意識,明確質量是生命線;二是建立服務質量標準和規范;三是加大相關的訓練;四是監督檢查,抓好落實。
8、加強管理,規范市場行為,保證人才市場的健康發展。作為政府人事部門要加強對全社會人才市場的規范和管理,通過立法、執法、宣傳、教育等措施創造一個公開、公正、公平的市場環境。作為人才中介服務機構,就要加強對交流場所和交易行為的管理。貫徹真實、合法、公平、誠信等原則,保證市場運行的健康、高效。