This preview shows pages 1–13. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
Unformatted text preview: Computability Theory and Complexity Theory COT 6410 Computability Theory The study of what can/cannot be done via purely mechanical means. Complexity Theory The study of what can/cannot be done well via purely mechanical means. What is it that we are talking about? Solving problems algorithmically! A Problem: Set of input data items (set of input "instances") A set of rules or relationships between data and other values A question to be answered or set of values to be obtained { Examples: Search a list for a key, SubsetSum, Graph Coloring } Each instance has an 'answer .' An instances answer is the solution of the instance  it is not the solution of the problem. A solution of the problem is a computational procedure that finds the answer of any instance A Procedure (or Program): A finite set of operations (statements) such that Each statement is formed from a predetermined finite set of symbols and is constrained by some set of language syntax rules. The current state of the machine model is finitely presentable. The semantic rules of the language specify the effects of the operations on the machines state and An Algorithm: A procedure that Correctly solves any instance of a given problem. Completes execution in a finite number of steps no matter what input it receives. { Example algorithm: Linearly search a finite list for a key; If key is found, answer Yes; If key is not found, answer No; } { Example procedure: Linearly search a finite list for a key; If key is found, answer Yes; Procedures versus Algorithms Looking back at our approaches to find a key in a finite list, we see that the algorithm always halts and always reports the correct answer. In contrast, the procedure does not halt in some cases, but never lies. What this illustrates is the essential distinction between an algorithm and a procedure algorithms always halt in some finite number of steps, whereas procedures may run Notion of "Solvable" A problem is solvable if there exists an algorithm that solves it (provides the correct answer for each instance). The fact that a problem is solvable or, equivalently, decidable does not mean it is solved . To be solved, someone must have actually produced a correct algorithm. The distinction between solvable and solved is subtle. Solvable is an innate property an unsolvable problem can never Computability vs Complexity Computability focuses on the distinction between solvable and unsolvable problems, providing tools that may be used to identify unsolvable problems ones that can never be solved by mechanical (computational) means. Surprisingly, unsolvable problems are everywhere, as you will see. In contrast, complexity theory focuses on how hard it is to Notion of "Order"...
View Full
Document
 Fall '10
 Dutton

Click to edit the document details