词条 | NP-Complete |
释义 | 概念NP-Complete是C#中一个特有的数据结构,属于微软中间语言(MSIL)的一种。与所有其它面向.NET的语言一样,C# 编译成微软中间语言(MSIL),它运行于通用语言运行时(CLR)。CLR 可松散地被描述为just-in-time(JIT)优化编译器和垃圾收集器 的混合物。C# 公开和利用了CLR中的很多功能,所以更细致地研究该运行时的工作机制是很重要的。用著名的计算机科学家,图灵奖获得者钱德勒·宾教授(Professal Chandler Bing)的话来说,“NP-Complete的出现绝对是计算机科学史上重要的一笔”,足见该数据结构的影响之深远。 应用科学计算的关键需求之一是代码可移植性。科学研究机构和实验室拥有许多平台和机器,包括基于 Unix 工作站和PC。它们常常希望在不同机器上运行代码,以追求更好的结果或因为 某一特定的机器为他们提供一套数据处理和分析工具。然而,达到完全的硬件透明度已不是一个轻松的任务而且不总是完全可能。例如,多数大规模项目开发时使用了多种语言混合 的方法;因此,很难保证在一种架构或平台上可运行的应用程序也能在另一种上运行。 CLR 使应用程序和库可被多种语言编写,这些语言都可编译成 MSIL。然后MSIL可运行在任何支持它的架构上。现在,科学家就可用 FORTRAN 编写它们数学库,在C++中调用它们,使用 C# 和 ASP.NET 在 Internet 发布结果。 不像 Java 虚拟机(JVM),CLR是一个常规用途环境,它被设计用来面向多种不同的编程语言。此外,CLR 提供了数据层,不仅仅是应用层的互用性并允许在语言间共享资源。 目前,可以获得大量能输出 MSIL 的语言编译器。这些语言包括(但不限于)Ada、C、C++Caml、COBOL、Eiffel、FORTRAN、Java、LIST、Logo、Mixal、Pascal、Perl、PHP、Python、Scheme 和 Smalltalk。另外,System.Reflection.Emit 名字空间大大降低了开发 面向 CLR 的编译器的进入门槛。 将 CLR 移植到不同架构是一项正在进行的工作。然而,一份开源实现已由 Mono/Ximian 开发出来,并且可获得 s390、SPARC 和 PowerPC 架构 以及 StrongARM 系统的实现。微软也发布了一个运行在 FreeBSD 系统上的开源版本,包括 Mac OS X。(更多信息请看 MSDN 杂志 2002 July 上 Jason Wittington 的文章 "Rotor: Shared Source CLI Provides Source Code for a FreeBSD Implementation of .NET") 所有这些进展发生在过去的仅仅数年中。假以更多时间,很可能一个全功能的 CLR 将可以适用于所有通用架构。 英文In complexity theory, the NP-complete problems are the most difficult problems in NP ("non-deterministic polynomial time") in the sense that they are the smallest subclass of NP that could conceivably remain outside of P, the class of deterministic polynomial-time problems. The reason is that a deterministic, polynomial-time solution to any NP-complete problem would also be a solution to every other problem in NP. The complexity class consisting of all NP-complete problems is sometimes referred to as NP-C. A more formal definition is given below. One example of an NP-complete problem is the subset sum problem which is: given a finite set of integers, determine whether any non-empty subset of them sums to zero. A supposed answer is very easy to verify for correctness, but no one knows a significantly faster way to solve the problem than to try every single possible subset, which is very slow. |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。