1, What is software development?
Software development process is the use of various computer languages to the real world people are concerned about the process of mapping to the computer world;
Now the mathematical theory is based on computer by the computer's pedigree, the famous Turing proposed in 1937, Turing machine model. Then less than a decade, computer was born (1945). (Ainiyake)
We all know that it was one of the main tasks for the missile trajectory calculations. At that time software development (software development if you can call it) and now very different. In order to count a problem, there must first complete the personnel and other kinds of operations, Math as building block components take up as if for a title, then these parts should be unbundled, according to the new requirements to re-build, low efficiency (and now more than).
Modern computer architecture and the actual calculation model from von. Neumann thought. In 1946 he and his colleagues found that the Ainiyake defects, issued a report, presented a program into memory, sequential thinking so that when considered only when a Xinti taking to change the computer The program's "soft" approach.
British scientists Wilks von achieved. Neumann's ideas, leading development of the "Yikesake" technically 姣斿焹灏间簹鍏?came a big leap.
Therefore, it is often called the von computer. Neumann computer.
History of software development from the official start.
Early programmers used machine language to program operations; with the compiler technologies, people have designed many higher-level language; the language out of the complicated details of the machine language, closer to people's natural language, growing in popularity years. According to statistics, at least over the world thousands of high-level language, but from the perspective of computability, computing power they are equivalent to Turing machines. Have shown that a computer language, as long as Chuliao assignment also involves the sequential statements, conditional statements and loops, it's computing power that is equivalent to Turing machines. Here of course, exclude other technical factors, such as program length, number of variables and data accuracy.
Because the idea is the Turing machine is transformed into one step by step 鎸?rule execution machinery Qiujie process whereby various Jisuan Ji Ye Buguodushi Mouzhongxingshi language language, so the process of Shizhi Shang Jiu Shi Kai Fa software programmers are the problem Yu of the objective world formal process. Programmers to first create the problem model (formal), and then to the appropriate computer language expression, and finally entered into the computer in the calculation.
2 from PO (process-oriented) to OO (object oriented)
From the discussion of the previous section we know:
Software development process is the use of various computer languages to people concerned about the real world (problem domain) is mapped to the process of the computer world; the following diagram:
鈫?real-world problem domain modeling (using a modeling) 鈫?Programming (using a programming language) 鈫?Computer World Executive Solution
Before talking about OO, let us review the history of high-level language.
Some of the earliest high-level language was born in 1945, is the German translation of his Chu Z-4 Computer Design Plan Calcul, than the first electronic computer was early months; in the first computer to achieve a high-level language is U.S. Younifake company in 1952 successfully developed Short Code; and truly promote the use of which is still popular in the United States first high-level language of computer scientists Backus design, and in 1956 IBM's first computer FORTRAN language implementation.
Early high-level language is mainly used in scientific and engineering computing, FORTRAN and their representative works ALGOL60. Computer after entering the field of business and administration, appeared to facilitate the business community such as COBOL and RPG language. In recent years, such language and database technology, graphical interface technology (Visual Programming), object-oriented thinking and RAD (Rapid Application Devolopment) the concept of combining to form a group of more convenient use of the so-called fourth-generation language (4GL), such as Powerbuilder, Delphi, VB, etc..
The former group used a large-scale scientific and engineering calculations are relatively more basic language, and therefore more flexible and wider range of applications. In FORTRAN, BASIC (learning), the since the 70s, the module features more obvious, easy to use, reliability of the PASCAL meteoric rise, widespread in the world. But 80 years into the future, its status has gradually replaced a more practical C language. Now, C language has the equivalent status of a "high-level assembly language" of the.
Late 80's, began to surface of object-oriented languages, C + + using the C language with a large team of programmers, in one fell swoop established its dominance of object-oriented language. OO thinking to the formal rule of the entire software development industry. C + +, made popular even 80 years from the U.S. military began to vigorously support the Ada language and the promotion will not end in failure.
After 90 years, the computer is turned upside down the world changes, the original single platform for in WEB, "The Network Is The Computer", the new language only if the OO's, Visual, and even if the WEB-based. INTERNET Java language, by the east wind, turned out to night popular in the world, change the speed is breathtaking.
These changes, the surface is a different programming tools to changes in the city of the first King of the flag, but behind it is reflected in a more profound changes in epistemological, that is what your point of view to understand the world? In the PO, the programmers of the problem domain, get a PO model, in which common words are variables, functions, procedures, etc.;
PO: the real world 鈫?Flow (variable, function) 鈫?PO language 鈫?Executive Solution
In OO, the OO programmers to get a first model, in which common words are classes, objects, methods, news, etc.;
OO: the real world 鈫?class diagram (object, method) 鈫?OO language 鈫?Executive Solution
We can see that:
PO closer to the physical realization of the computer world; OO is more consistent in people's understanding of habit;
If the software crisis is rooted in the expression of people understanding the process of (constantly repeated, gradually deepening), and von. Neumann realization of the computer (the order of execution) there is a huge gap between, then from the PO to mean that this gap OO gradually reduced;
OO thinking and as a programming language for software development of the entire process - from analysis and design to coding - provides a complete solution. OO is a software development called milestone achieved great success, people were all applauded!
A reference to OO, we will think of C + +, smalltalk, simula, associate Use Case, ROSE, Mr Jacboson and Rational firms, but few people will Wittgenstein (Wittgenstein). However, it is the legendary philosopher, not only for the first time clearly expressed OO thinking, further referred to what happened afterwards OO, and the final limit lies.
In the current review of this fast-changing times and really thinking about the sage's thought, might enable us to more clearly, more clearly a long road ahead.
3 Wittgenstein (Wittgenstein) and OO
Wittgenstein is the history of philosophy in this century and even the human one of the greatest philosophers. Just before his death in 1922 he published a book - "Tractatus" (Tractatus Logico-Philosophicus). In the book, he described a world view, or a kind of understanding of the world's point of view, this view, 67 years later, and finally precipitated by a philosophy to the technical level up, as the computer industry darling, this is the "OO", Object-Oriented, object-oriented or object-oriented (RTHK term).
Let us touch on something far away, (which may touch on really well the point), to talk about this man, talk about his "Tractatus," a book of OO thinking.
Interested in Western philosophy friends all know the history of philosophy in the West twice a profound shift occurred. The first was from the "ontology" to "epistemology" in turn; The other was from the "epistemological" to the "Methodology" turn.
Ancient Greek and Roman era philosophy, known as the "ontology" of the times, when philosophers are most concerned about is the origin of the world, namely what the world is composed? What is the nature of the world? Explore the world and so these fundamental issues. From Thales's "All Things are water" to the "four elements" that "atomism", to Plato's "absolute idea", are on this issue put forward their own views.
The impact of the Christian faith with power (Jewish tradition) and the secular forces of the political despotism (Roman tradition), the concept of God to make conclusive answer to this question, dissent will have life-threatening, that is so Bruno was burned to death. Of course, Christianity has made a number of outstanding philosophers, who inherited the Greek rational tradition, a mixture of biblical ideas, construct a magnificent Christian philosophy. Their representatives are Augustine and Thomas. Aquinas. Aquinas has proposed five ways to prove the existence of God (the Greek rational tradition).
After the Middle Ages, with the rise of the Renaissance, people began to get out from under the shadow of God, and found its own role, that human value. To Descartes "I think therefore I am" marked the beginning of philosophy by "ontology" to "epistemology" change; this period of philosophy concerned with understanding human problems specific to their focus on the different schools often鍒嗕负鈥滃敮鐞嗚鈥濆拰鈥滅粡楠岃鈥濓紝鍓嶈?娉ㄩ噸鐞嗚婕旂粠锛屼互绗涘崱灏旂瓑浜轰负浠h〃锛涘悗鑰呭垯娉ㄩ噸鎰熻鍜岀粡楠岋紝浠h〃浜虹墿鏄礇鍏嬶紝鍩规牴绛夈?
銆??绉戝鍏跺疄灏辨槸铻嶅悎浜嗏?鍞悊璁衡?鍜屸?缁忛獙璁衡?鐨勯暱澶勮?鍙戝睍澹ぇ鐨勩? 鏃㈠己璋冭瘯楠屽拰瑙傚療锛岃繍鐢ㄥ綊绾虫硶锛屼篃閲嶈鍒╃敤鏁板鍜岄?杈戜粠褰掔撼鐨勭粨鏋滃嚭鍙戯紝鏋勯?鐞嗚妗嗘灦锛屾紨缁庡嚭鏂扮殑绉戝瀹氱悊銆?br />
銆??鍒颁簡搴峰痉浠ュ悗锛屽挨鍏舵槸鏈笘绾垵锛屽摬瀛︾殑鏍稿績闂寮?鐢扁?璁よ瘑璁衡?杞悜鈥滄柟娉曡鈥濓紝鍝插鍏冲績鐨勬牳蹇冮棶棰樻槸璁よ瘑濡備綍瀹炵幇鐨勯棶棰樸?杩欎竴鏃舵湡锛屽摬瀛﹀浠紑濮嬭璇嗗埌璇█瀵逛簬浜虹殑璁よ瘑鐨勭壒娈婂湴浣嶏紝浠栦滑绾风悍浠庣爺绌惰瑷?嚭鍙戞潵鐮旂┒鍝插銆?鍏朵腑鐢氳嚦鏈変簺浜烘瀬绔殑璁や负浠ュ墠鐨勬墍鏈夊摬瀛﹂棶棰樹笉杩囨槸璇█鐨勯棶棰樿?宸层? 銆??鍝插鐨勮繖娆¤浆鍚戞湁鏃朵篃琚О涓烘槸鈥滆瑷?殑杞悜鈥?锛屾柊鐨勫摬瀛﹁鐐硅鍐犱互鈥滆瑷?摬瀛︹?鎴栤?鍒嗘瀽鍝插鈥濈殑鍚嶇О銆?br />
銆??鈥滆瑷?摬瀛︹? 鐨勫彂灞曠粡鍘嗕簡涓や釜闃舵锛屾垨鑰呰鍙互琚繘涓?鍒嗕负涓や釜瀛︽淳锛氣?閫昏緫鍒嗘瀽娲锯?鍜屸?鏃ュ父璇█娲锯?銆傜淮鐗硅窡鏂潶鐨勫紩浜虹灘鐩箣澶勫湪浜庯細浠栧湪鍓嶆湡鎸侀?杈戝垎鏋愮殑瑙傜偣锛屽悗鏈熷垯鎸佹棩甯歌瑷?殑瑙傜偣銆?br />
銆??鎬荤粨涓?笅涓婇潰璁鸿堪鐨勮鐐癸紝鐜板湪鎴戜滑鐭ラ亾:
銆??瑗挎柟鍝插鐨勫彂灞曪紝缁忓巻浜嗕袱娆″彉闈╋紝涓?鏄璇嗚杞悜锛涗竴娆℃槸璇█杞悜锛涚涓?杞悜浣垮摬瀛︾殑鍩虹浠庢湰浣撹鍜屽舰鑰屼笂瀛﹀彉涓鸿璇嗚锛屼粠鐮旂┒瓒呴獙鐨勫瓨鍦ㄧ墿杞埌鐮旂┒璁よ瘑鐨勪富浣撳拰涓诲浣撳叧绯伙紱绗簩娆¤浆鍚戞妸瀵逛富瀹綋鐨勫叧绯荤殑鐮旂┒鍙樻垚浜嗗涓讳綋闂寸殑浜ゆ祦鍜屼紶杈鹃棶棰樼殑鐮旂┒銆傛妸瀵逛富浣撶殑鐮旂┒浠庤蹇靛拰鎬濇兂鐨勯鍩熻浆鍒颁簡璇█鐨勯鍩?璇彞鍙婂叾鎰忎箟)锛涜繖涓ゆ杞悜鐨勪唬琛ㄤ汉鐗╁垎鍒槸绗涘崱灏斿拰缁寸壒璺熸柉鍧︺?
銆??涓嬮潰鏄淮鐗硅窡鏂潶(Wittgenstein)鐨勫皬浼犮?
銆??缁寸壒璺熸柉鍧?889骞寸敓浜庣淮涔熺撼銆?闈掑勾鏃舵湡鐨勬暀鑲查鍏堜娇浠栨垚涓轰竴鍚嶈埅绌轰笓涓氬伐绉戠爺绌剁敓锛?908-1911锛屾浖褰绘柉鐗广?23宀佹椂浠栧埌钁楀悕鐨勫墤妗ュぇ瀛﹀涔犲摬瀛︼紝鎴愪负缃楃礌鐨勫鐢熴?鎹缁寸壒璺熸柉鍧﹀綋鏃舵涓鸿嚜宸辨湭鏉ョ殑鍙戝睍鏂瑰悜鎰熷埌杩疯尗锛屽伐绉戣繕鏄摬瀛︼紵涓?ぉ鏅氫笂浠栧甫鐫?嚜宸辩殑涓?簺鎵嬬(鏉傛劅涔嬬被鐨勪笢瑗?鏉ユ壘缃楃礌锛岃缃楃礌璇讳竴涓嬶紝鐒跺悗鍒ゆ柇鑷繁鏄惁鏄鍝插鐨勬枡锛屽鏋滀笉琛岀殑璇濓紝灏卞噯澶囧嵎閾虹洊璧颁汉銆?缃楃礌鎷胯捣浠栫殑鎵嬬锛屽彧鐪嬩簡澶翠竴鍙ヨ瘽锛屽氨鍧氬喅鍦板浠栬锛屼綘涓嶅鍝插澶彲鎯滀簡涔嬬被鐨勮瘽銆?缁寸壒璺熸柉鍧﹁繖鎵嶅潥瀹氫簡鎶曡韩鍝插鐨勫喅蹇冦?
銆??鍦ㄧ涓?涓栫晫澶ф垬鏈熼棿(1914-1918)锛岀淮鐗硅窡鏂潶鍙傚姞濂ュ湴鍒╁啗闃燂紝鍚庢潵琚繕銆?姝f槸鍦ㄨ繖娈垫椂闂撮噷锛屼粬瀹屾垚浜嗚嚜宸辩殑鎴愬悕浣滐紝銆婇?杈戝摬瀛﹁銆?Tractatus Logico-Philosophicus)銆?璇ヤ功浜?922骞翠互鑻辨枃鍑虹増锛屾槸浠栫敓鍓嶅嚭鐗堢殑鍞竴鐨勪竴鏈憲浣溿?
銆??鍦ㄨ繖鏈功涓紝缁寸壒璺熸柉鍧﹂槓杩颁簡鑷繁鐨?amp;quot;閫昏緫鍘熷瓙璁?amp;quot;鐨勫摬瀛﹁鐐癸紝鎴愪负璇ュ娲剧殑浠h〃浜虹墿涔嬩竴銆?鍏朵粬钁楀悕鐨勨?閫昏緫鍘熷瓙涓讳箟鑰呪?鍖呮嫭缃楃礌锛屾?娴风壒锛屽紬闆锋牸绛夈?璇ヤ功鐨勫嚭鐗堝紑鍒涗簡鍝插鐮旂┒鐨勬柊鏂瑰悜銆?br />
銆??瀹屾垚杩欐湰涔﹀悗锛岀淮鐗硅窡鏂潶璁や负鑷繁宸茬粡瑙e喅浜嗘墍鏈夌殑鍝插闂锛屼簬鏄粬灏辩湡鐨勬斁寮冧簡鍝插锛屽厛鏄綔浜嗕竴涓姳鍖狅紝鍚庢潵浣滀簡涓?悕灏忓鏁欏笀銆?闇?璇存槑鐨勬槸锛屼粬瀹跺緢瀵屾湁锛屼絾浠栦富鍔ㄦ斁寮冧簡瀵瑰法棰濋仐浜х殑缁ф壙鏉冿紝鑷効杩囦竴绉嶆湸绱犵畝鍗曠殑鐢熸椿銆?br />
銆??澶х害10骞寸殑鏃堕棿锛岀淮鐗硅窡鏂潶鑴辩浜嗗摬瀛︾晫銆?浣嗗悗鏉ワ紝浠栧鑷繁鍦ㄣ?閫昏緫鍝插璁恒?涓〃杩扮殑鍝插鐨勫彲闈犳?浜х敓浜嗘繁娣辩殑鎬?枒銆備簬鏄紝鍦?929骞翠粬閲嶆柊杩斿洖鍓戞ˉ锛屾垚涓轰笁涓?闄㈢殑鑰佸笀銆?939 骞翠粬寰楀埌浜嗘暀鎺堢殑鑱岀О銆備絾鍦ㄧ浜屾涓栫晫澶ф垬鏈熼棿锛屼粬鍗翠互涓?悕鍖荤敓鐨勮韩浠戒负鍐涢槦鏈嶅姟銆?947骞寸淮鐗硅窡鏂潶浠庡墤妗ラ?浼戯紝瀹氬眳浜庣埍灏斿叞銆傝繖涓?椂鏈熶粬瀵瑰摬瀛︾殑鎬濊?褰㈡垚浜嗕粬鍚庢湡鐨勫摬瀛︽?鎯炽?1949骞翠粬鍘讳簡瓒熺編鍥斤紝褰撳勾鍥炴潵鏃朵笉骞歌韩鎮g檶鐥囷紝1951骞村湪鐗涙触涓庝笘闀胯緸銆?br />
銆??姝诲悗锛屼粬鍚庢湡鐨勬?鑰冭鏁寸悊鍑虹増锛屻?鍝插鐮旂┒銆?Philosophical Investigations)锛屻?鍏充簬纭畾鎬с?(On Certainty) 绛夌瓑锛屽紑鍒涗簡璇█鍝插鐮旂┒鐨勫彟涓?釜鏂扮殑鏂瑰悜銆?br />
銆??浠ヤ笂鎴戠綏閲岀綏鍞嗭紝涓昏鏄粙缁嶄簡缁寸壒璺熸柉鍧﹀湪鍝插鍙蹭笂鐨勫湴浣嶏紝鍙婂叾棰囧叿浼犲鑹插僵鐨勪竴鐢熴?鍏翠箣鎵?嚦锛岃澶у瑙佽皡銆?br />
銆??涓嬮潰鎴戜滑杩涘叆涓婚锛岃皥涓?皥銆婇?杈戝摬瀛﹁銆?鍙婂叾涓〃杩扮殑OO鎬濇兂銆?br />
4. OO after that?
First, the history of software engineering perspective
1969 NATO meeting, the "software crisis" has become the focus of attention. To meet the challenges of software crisis, people have made unremitting efforts. These efforts generally along the two directions simultaneously. First, from a management point of view, hope for software engineering development process. The most famous results in this regard is the proposal we are familiar with the "waterfall" life cycle model. It is the end of the 60s "software crisis" after the first life cycle model. As follows.
Analysis 鈫?design 鈫?code 鈫?Test 鈫?Maintenance
Later, it was for the model, we propose a rapid prototyping, spiral model, fountain models of the "waterfall" life cycle model is added. Now, they practice in software development is widely used.
These efforts, but also to create awareness of the standards and the development of the document between the developer and the means of communication between users of the importance. Some important document format standards are finalized, including variables, symbols, naming rules and norms of the original code format.
It is worth mentioning that in the developer between the developer and the means of communication between users in this regard, since the emergence of Internet provides a new means of communication, but also created a new Internet-based development way, that is OSS (Open Source Software). The representative works of Linux (operating system), Apeche (web server), Sendmail (Mail server) and so on. OSS is a very promising way of developing the tide of development by the Internet, it will inevitably produce the entire software development model is difficult to gauge the impact. The recent special issue of IEEE Software Engineering will feature plays out a special issue. January 1999 will be held on the Linux / OSS in the international seminar. Various computer companies have to react, Microsoft is aware of the tremendous threat from the OSS, presented at the end of August an internal confidential document, specifically put forward their own coping strategies, can be called Rain Comes from Wind . All interested parties had an interest.
Software engineering, the second direction of development, focusing on software development and analysis, design research methods. This is the first important result of the rage in the 70 years of structured development methods, that PO (process-oriented method of development or structure of words). PO is the people using computers in the world to express the real world, the pursuit of the process, then, modular, encapsulated, and more abstract results. People use computers to map real world, the lowest level of implementation is simply generated by digital circuit technology high and low signal. Expressed in mathematical language is a binary string such as 010101000010111. This is a very low level of abstraction, from a natural language, most people can not understand. One block of these binary string definition proposed byte, ASCII, so the concept of a higher level of abstraction, so that corresponds to the natural language of a letter. On the basis of re-using some form of language, abstract variables, expressions, operators, statements and so on. At this level, generally trained programmers have been less pain can be compared to the software developed. Next abstract arises PO. In the PO, the people's attention is how to function and process to achieve real-world simulation, will be mapped to the computer's world. OO this is the increasing level of abstraction of the natural process of development results, it uses the concept of classes and objects, the variable and the variable operation functions and procedures package together, with this higher level of abstraction to express the objective the world. Typically, an object contains properties and methods, which corresponds to natural language in a meaningful term to describe the real world an object (physical entity) or concepts (abstract entities). This level of abstraction as shown below:
Level of abstraction in the computer world
* XO (X?-Oriented) the highest level of abstraction
* OO (object, class)
* PO (procedures, functions, variables)
* Variables, operators, expressions, statements
* Bytes (4, 8, 16, 32, 64)
* Binary string 0101011110001 lowest level of abstraction
From the graph, and the above discussion we know that the history of software engineering is that people continue to pursue higher level of abstraction, encapsulation and modularity of history. OO certainly not the end of history. Although not precisely what followed by OO, at least we can infer, OO after the XO, will inevitably be a higher level of abstraction than the OO. It must rely on the core concepts and inclusive than the concept of the object. As the object above and inclusive of the function and variable.
Second, from Wittgenstein, "Tractatus," a book of thought view
Before we know, Wittgenstein "Tractatus," a book put forward the following ideas:
* The world can be divided into facts (The world divides into facts.)
* The fact is that the atomic facts (atomic facts) composition.
* An atomic fact is that more than one object (objects) combination.
* Object is a simple (basic) The Object is simple.
* Objects forming the basis of the world.
Namely: the fact that the world --- ---- ---- atomic fact objects a whole to local, from the abstract to the concrete understanding of the chain. At this level, the object as a basic module, constitute the entire understanding of the cornerstone of the building. Objects through the association between the complex constitute the entire world. This view is also the cornerstone of object-oriented theory. The period of our analysis of the world through computer draw, OO, after development, will produce a higher level of abstraction than the OO concepts for programming. According to Wittgenstein's ideas can be very naturally to the conclusion: this concept is the fact (FACT). Object-oriented after the fact-oriented, OO followed FO (Fact-Oriented). So, what is a fact (fact)? Let us again remind ourselves of Wittgenstein's point of view.
First of all, the world is the sum of all the facts. The world can be broken down as a fact. Any fact or is true or not true. (That fact should return a Boolean variable, or TRUE, or FALSE)
Secondly, the fact that those who really are the atomic facts (atomic facts) composition.
Atomic facts and the relationship between simple objects like this: an atomic fact is that more than one object (object) combinations. In atomic facts, objects connected in some way identified. Atomic facts in a way to interconnect the fact that the structure of atoms. In other words, the fact is the structure of atoms, this structure is Wittgenstein as a real-world model (form).
Here, Wittgenstein put forward several important concepts: the facts (fact), atomic facts (atomic fact) and mode (form).
If the above reasoning is correct, we will come to the conclusion: object-oriented (OO) is for after the fact (FO), fact-oriented (FO) analysis, design and programming, we will mainly focus on facts (fact), atomic facts (atomic fact) and mode (form) of these basic concepts to organize our software development activities. In recognition of the hierarchy of the world, these concepts than the object (object) and class (class) a higher level of abstraction.
5. The final limit
If, after OO FO, then of course we have to ask, FO after what? Later on Which? Is there a final limit? If so, what limits? This is a very difficult question, but let us continue to think and see what results can be, even though it may be very stupid and naive.
We know that software is essentially a computer programming language for the people to bridge the world of objective perception to the world map on the computer to solve the people in the world of objective perception problem to be solved.杩欓噷鐗垫秹涓変釜涓昏鐨勮寖鐣达細 銆??瀹㈣鎰熺煡涓栫晫--------璁$畻鏈虹紪绋嬭瑷?---------璁$畻鏈轰笘鐣?br />
(1) Computer World
In the computer world, it is conceivable that the unit area can be integrated on a chip always have a maximum number of transistors, Moore's Law to fail sooner or later. In addition, most computers are now used by Feng. Neumann architecture also needs to be a breakthrough. (Such as parallel computing research)
(2) computer programming language
Now the computer programming language, is some type of formal language. To solve a problem, we must first construct algorithms for it. That is, there is no algorithm for the problem, we are helpless. Such issues are as is "incalculable." Their solution can not by the Turing machine to produce. This is a limit we face.
With the algorithm as a problem, is not what will be resolved? Unfortunately, the answer is no. For NP (non polynomial) problems, especially NP complete problem, despite the algorithm, we are still unable to solve in polynomial time. The famous "Hamiltonian circuit problem" and the "traveling salesman problem" are all these problems.瀹冧滑鐨勫叡鍚岀壒寰佹槸锛屽綋闂鐨勮妯★紙鎴栧鏉傚害锛夌嚎褰㈠鍔犳椂锛岃В鍐宠闂鎵?鍖栫殑鏃堕棿灏嗗憟鎸囨暟涓婂崌锛屼互鑷充簬瀹冧滑灏界鐞嗚涓婃槸鍙眰瑙g殑锛屼絾瀹為檯涓婂嵈鏄笉鍙兘鐨勩?鍥犱负瑕佽姳璐圭殑鏃堕棿鍙兘宸茬粡瓒呰繃浜嗗畤瀹欑殑瀵垮懡銆傝繖涔熸槸鎴戜滑闈复鐨勪竴涓瀬闄愩?
銆??杩橀渶瑕佹寚鍑猴紝鐜板湪鐨勮绠楁満璇█浣滀负褰㈠紡璇█鐨勪竴绉嶏紝涔熷繀鐒跺叿鏈夊舰寮忚瑷?嚜韬墍鏈夌殑灞?檺鎬с?鏁板鐨勫彂灞曞彶涓婏紝鏇剧粡鏈変笁娆″嵄鏈猴紝绗笁娆″嵄鏈烘槸鏈夌綏绱犵殑涓?釜鈥滀蒋璋?寮曞彂鐨勬倴璁哄嵄鏈恒?涓鸿В鍐虫鍗辨満锛屽笇灏斾集鐗规彁鍑轰簡瀹忎紵鐨勫舰寮忓寲瑙勫垝锛屼紒鍥句娇鏁板涓?姵姘搁?鍦板浜庢棤鍙簤杈╃殑瀹夊叏鍩虹涔嬩笂銆傚彲鏄紝1931骞村ゥ鍦板埄25宀佺殑澶╂墠鏁板閫昏緫瀛﹀姝屽痉灏旀彁鍑轰簡涓?潯鍒掓椂浠g殑瀹氱悊锛岀矇纰庝簡甯屽皵浼壒褰㈠紡鍖栫殑缇庢ⅵ銆傚摜寰峰皵瀹氱悊鍚戞垜浠睍绀猴紝鍏悊绯荤粺鏈韩鐨勫崗璋冩?鐨勯檲杩板湪琚紪鐮佹垚閫傚綋鐨勭畻鏈懡棰樺悗锛屽皢鎴愪负涓?亾杩欐牱鈥滀笉鑳藉喅瀹氱殑鈥濅笉鑳藉喅瀹氱殑鍛介銆傛兂璞′竴涓〃杈惧紡鏃笉涓虹湡锛屼篃涓嶄负鍋囷紝瀹冪殑鐪熷亣瀵逛竴涓舰寮忕郴缁燂紙璁$畻鏈猴級鑰岃█瀹冩槸涓嶅彲鍒ゅ畾鐨勩?鍥犳鍦ㄨ繖鏂归潰锛屽摜寰峰皵瀹氱悊鏄垜浠潰涓寸殑鍙堜竴涓瀬闄愩?
(3)瀹㈣鎰熺煡涓栫晫
銆??鐜板湪璁╂垜浠亣璁捐蒋浠跺伐绋嬪凡缁忓彂灞曞埌浜嗚繖鏍蜂竴涓悊鎯崇殑澧冪晫锛屾湁涓?ぉ鎴戜滑瀹炵幇浜嗚嚜鐒惰瑷?紪绋嬶紝鏄惁灏变竾浜嬪ぇ鍚変簡锛熸崲鍙ヨ瘽锛岃嚜鐒惰瑷?槸鍚﹁兘寰堝ソ鍦版弿杩般?琛ㄨ揪瀹㈣鎰熺煡涓栫晫锛?銆??缁寸壒鏍规柉鍧﹀湪銆婇?杈戝摬瀛﹁銆嬮噷宸茬粡鎸囧嚭浜嗐?
銆??锛婁笘鐣岀殑鎰忎箟蹇呭畾瀛樺湪浜庝笘鐣屼箣澶栵紱
銆??锛婃樉鐒朵鸡鐞嗗鏄棤娉曡〃杩扮殑銆?浼︾悊瀛︽槸瓒呰秺鐜板疄鐨勶紱
銆??锛婂疄闄呬笂瀛樺湪鐫?笉鍙〃杈剧殑涓滆タ锛涜繖鏄剧ず浜嗗畠鐨勫瓨鍦紱瀹冩槸绁炵鐨勩?
銆??锛堣銆婇?杈戝摬瀛﹁銆嬬鍏妭锛?br />
銆??涔熷氨鏄锛屽閮ㄤ笘鐣屼腑瀛樺湪涓?簺鎴戜滑鍙互鎰熺煡鍗存棤娉曠敤璇█鏉ヨ〃杈剧殑涓滆タ銆?銆??浠栨帴鐫?锛?br />銆??鈥滃浜庨偅浜涗笉鍙█璇寸殑锛屽繀椤讳繚鎸佹矇榛樸?鈥濓紙Whereof one cannot speak锛宼hereof one must be silent锛?br />
銆??杩欏彞璇濓紝鎴愪负鎴戜滑鏈?悗鐨勬瀬闄愩?
銆??鍦ㄨ璁哄畬杩欎笁涓寖鐣翠腑鎴戜滑灏嗛潰涓寸殑涓昏闂鍚庯紝鎴戜滑鏈?悗鏉ヨ璁轰竴涓嬩汉鐨勪富瑙備笘鐣屽杞欢鍙婅蒋浠跺紑鍙戠殑褰卞搷銆?br />
6. 鏋侀檺涔嬪鐨勭┖闂?br />
銆??涓栫晫鍙互鍒嗕负涓昏鎯宠薄涓栫晫鍜屽瑙傚彲鎰熺煡涓栫晫锛屾垨鑰呰鏄唴涓栫晫鍜屽涓栫晫銆傚叾涓紝涓昏鎯宠薄涓栫晫鏄绠楁満浠庢湭娑夎冻鐨勭┖闂淬?杩欐槸灞炰簬鎴戜滑涓汉鐨勭鏈夌┖闂达紝鍏呮枼鐫?垜浠嚜宸辩濂囧彜鎬殑骞绘兂鍜岃捣浼忎笉瀹氱殑鎯呯华銆傚畠鍏锋湁鏋佸ぇ鐨勮烦璺冩?鍜屼笉纭畾鎬э紝甯稿父浠ョ洿瑙夈?鎯宠薄鐨勬柟寮忚繘琛岀潃鑷繁鐨勬椿鍔ㄣ?瀹冧滑閫氬父鏄瑷?墍涓嶈兘琛ㄨ揪鐨勩?
銆??灏界杩欎釜鍐呬笘鐣屾槸濡傛鐨勫鏉傘?娣蜂贡銆侀毦浠ユ崏鎽革紝浣嗗畠鍗存槸鎴戜滑涓庣敓淇辨潵鐨勪竴閮ㄥ垎銆?銆??鎴戜滑灏辨槸杩欐牱鐨勪汉銆?br />
銆??灏辨槸杩欐牱鐨勪汉浠庝簨鐫?蒋浠跺紑鍙戠殑宸ヤ綔銆?br />
銆??杩欐牱鐨勪汉寮?彂鍑烘潵鐨勮蒋浠剁┒绔熷湪澶氬ぇ绋嬪害涓婃槸瀵瑰瑙備笘鐣屼笉鎶樹笉鎵g殑鏄犲皠锛熻繕鏄繖涓槧灏勮繃绋嬪凡缁忚鎵洸鎴栨幒鏉備簡锛熻蒋浠跺紑鍙戣?鐨勮繖涓富瑙傛兂璞′笘鐣岋紝浠栦滑鐨勬涔愩?娌抚銆佸鎯炽?鎭愭儳銆佸笇鏈涚瓑绛夛紝绌剁珶鏄?鏍峰奖鍝嶇潃杞欢寮?彂鐨勮川閲忥紵
銆??浜轰滑鏄鐢ㄨ绠楁満鏉ュ鍒舵暣涓笘鐣岋紵杩樻槸鏉ュ鍒朵汉鏈韩锛?br />銆??浜轰滑鏄湪鎵紨涓婂笣鐨勮鑹插悧锛?銆??杩欐牱鐨勯棶棰樻垜瀹炲湪涓嶇煡璇ュ浣曞幓瑙g瓟锛岀敋鑷宠寰楁牴鏈棤浠庝笅鎵嬨?
銆??濡傛灉浣犺繕鏈夎冻澶熺殑鑰愬績璇诲埌杩欓噷锛岃浣犱篃鏉ユ兂涓?兂锛屽笇鏈涘畠浠笉浼氫娇浣犲ご鐤笺? 銆??:)
銆??鏈?悗锛屾垜灏嗗紩鐢ㄦ垜浠庣綉涓婂伓灏斿彂鐜扮殑涓?瘒鏂囩珷涓殑璇濅綔涓虹粨鏉熻锛?br />
銆??鈥滆嚜浠ヤ负鏄殑绔嬫硶鑰?浜虹被)鐘笅浜嗕竴涓ぇ閿欙紝浠ヤ负鑷繁鑳藉畾涔夋暣涓蒋浠跺紑鍙戣繃绋嬨?浠栦滑鏃笉浜嗚В鍏跺紑濮嬩篃涓嶄簡瑙e叾缁撴灉銆傚鏈晫璇曚簡涓?笅锛岀劧鍚庡氨鐭ラ毦鑰岄?浜嗐?鍟嗕笟鐣屽垯瀵瑰叾姣棤鍔炴硶銆傚ぇ鍨嬭蒋浠跺紑鍙戝晢浠枼宸ㄨ祫鏉ュ埗閫犱唬鐮侊紝鏄庢槑鎯宠鎵紨涓婂笣鐨勮鑹诧紝鍗磋繕瑁呬綔鑷繁鏄汉绫荤殑鍏粏銆傛墍鏈変汉閮藉湪鐩潃闀滃瓙閲岀殑鑷繁銆傝绠楁満鍗村湪涓?梺鍋峰伔鐨勭瑧銆傗?
相关链接:
Zack Rusin interviewed the beauty and magic of KDEWang Donglin Beijing scholar CHAIRMANAccess Control ReportMPG To DivXAVI to MKVIDS weaknesses and Limitations (2)CGI teaching: CGI environment variables usedBridge towards 3G - CDMA200-1XDivX to 3GPGood DelphiHow To Manage Software Development And Progress InPhotoshop Candy Cane Gourmet SeriesPS texture Text Series: Python Pattern word