Course Outline:

I.                             Models of computations. Computational complexity. Parallel computation.

 

II. General Computational Models:

1. Logic Circuits: Straight-Line Programs and Circuits, Normal Form Expansion of Boolean Functions, Specialized Circuits, Prefix Computations. Addition.

2. Machines with Memory: Finite State Machines, Simulating FSMs with Shallow Circuits, RAM machines, Turing machines, Circuit simulation of a Turing machine.

3. Selected Topics on FSMs: Morphisms of finite automata, minimization algorithm of complete finite automata, minimization algorithm of incomplete automata, alternating finite automata, synthesis algorithms for family of regular languages (generalization of Brzozowski's algorithm).

4. Computability: Techniques of Turing Machine design, recursive functions and Turing machines; functions computed by Turing machines, non-deterministic and alternating Turing machines, time and space complexity of Turing machine computations, halting problem; examples of unsolvable problems about Turing machines.

 

III. Computational complexity:

5. Complexity Classes: Relations among complexity measures, time and space-bounded Turing machines, P and NP computations, NP-completeness, P=NP question, definitions and examples of P-complete and NP-complete problems, boundary between class P and NP, examples of P-SPACE complete problems, circuit and PRAM model of computation, efficiently parallelizable languages.

6. Space-Time Tradeoffs:

Pebble game, straight-line vs. branching programs, time-space tradeoffs.

7. Memory-Hierarchy Tradeoffs:

Red-blue pebble game,the memory hierarchy pebble game,hierarchical memory  model.

 

Examples of problems that will be discussed:

1.      Selected Topics on Finite State Machines:

-         elements of FSM representation (characteristic semigroup, notation)

-         PLA effective implementation of FSM using NDFA

-         morphims of FSM; sequential algorithm to compute homomorphisms of FSM; parallelization

-         decomposition of FSM: algorithm to compute all SP partitions of a FSM

-         Hopcroft’s minimization FSM algorithms with implementation and experiments.

-         Shallow implementations of FSM using prefix circuits

-         Relationships between FSM, RAM programs, and TMs; PRAM model.

 

2.      NP-completeness of decision problems:

-         modeling of decision problems by NDTM and DTM (PARTITION problem)

-         acceptance of recursive functions by DTM (multiplication of two numbers).

-          Cook theorem with proof of NP-completeness for SAT decision problem

-          Technique to proof NP-completeness using a concept of polynomial reducibility

-         NP-complete problems with proofs of NP-completeness (3-SAT, Vertex Cover, Clique, Map coloring, Graph Coloring, Timetable and Restricted Timetable problem)

-         Subproblems of NP-complete problems that have polynomial algorithms (2-SAT  is polynomial)

-         implications of reducibility of decision problems (Map coloring vs. SAT, neural function vs. SAT)

-         Dynamic programming algorithm for TSP.

 

3.      Examples of fast parallel algorithms:

-         parallel prefix computation in polylogarithmic time O(log n)

-         carry-lookahead addition of numbers in polylogarithmic time

-         bitonic sort in polylogarithmic time O(log2 n)

 

4.      P-complete problems and PSPACE-complete problems:

-         Quantified SAT problem as a PSPACE-complete problem

 

5.      Undecidability/Unsolvability:

-         logic paradoxes, 3x+1 problem, meaning of unsolvability and undecidability

-         halting problem as a generic undecidable problem

-         decidable and undecidable problems for regular languages, FSM, CFG, PGA, and TM

 

 

Evaluation Procedures:

Mid-term examination

1 x 25

25

Final examination

1 x 25

25

5 Homework Assignments

5 x 5

25

2 Programming Assignments

2 x 12.5

25

 

TOTAL =

100 pts