Discrete Mathematics for Algorithm and Software Design
(HSE University, CS Faculty, September – October 2019)
Tentative Outline
- propositional logic: resolution method; elements of predicate logic;
- regular expressions and lexical analysis;
- context-free grammars and parsing algorithms;
- P vs. NP: NP-completeness of 3-SAT, polynomial algorithm for 2-SAT;
- #P; #P-completeness of #2-SAT;
- elements of graph theory.
Course Materials
HW #2
Download [.pdf]
Please bring your answers in written form to the class on Wednesday, October 10, 2019. If you are unable to
attend the class, please send a scan/photo by email.
Deadline: Oct 16, 2019.
HW #1: Practice in Boolean Logic
This is a programming task. Choose one of the following two tasks and write a program
which solves it.
-
Given a Boolean formula, constructed from variables using
/\ (conjunction), \/ (disjunction), -> (implication), and ~ (negation),
translate it into Conjunctive Normal Form andinto Disjunctive Normal Form.
-
Given a Boolean formula in 2-CNF, use the resolution method to determine whether it is satisfiable.
Clauses of the 2-CNF can be of one of the two forms: α \/ β or α -> β,
where α and β are literals (p or ~p, where p is a variable).
The CNF is presented in the usual notation, for example: (p -> q) /\ (~r \/ s) /\ (~q -> p)
Deadline: October 11, 2019 (23:59 MSK). Submissions by e-mail welcome.
Students are encouraged to use Python and PLY, but solutions in other programming languages are also OK.
Additional Reading