Projects/1BIT/summer-semester/IZLO-1/izlo-projekt1/code/cnf.h
2026-04-14 19:28:46 +02:00

29 lines
No EOL
1.1 KiB
C

#ifndef __CNF_H
#define __CNF_H
#include <stdbool.h>
#include <assert.h>
typedef struct Literal Literal;
typedef struct Clause Clause;
typedef struct CNF CNF;
// Struktura reprezentujici ulici z křižovatky crossroad_from do křižovatky crossroad_to
typedef struct {
unsigned crossroad_from;
unsigned crossroad_to;
} Street;
// Vytvoreni nove klauzule v danej formuli
Clause* create_new_clause(CNF *formula);
// Prida (pripadne negovanou) promennou do klauzule reprezentujici, že v kroku step je zvolena ulice z křižovatky crossroad_from do křižovatky crossroad_to
void add_literal_to_clause(Clause *clause, bool is_positive, unsigned step, unsigned crossroad_from, unsigned crossroad_to);
void at_least_one_valid_street_for_each_step(CNF* formula, unsigned num_of_crossroads, unsigned num_of_streets, const Street* streets);
void at_most_one_street_for_each_step(CNF* formula, unsigned num_of_crossroads, unsigned num_of_streets);
void streets_connected(CNF* formula, unsigned num_of_crossroads, unsigned num_of_streets);
void streets_do_not_repeat(CNF* formula, unsigned num_of_crossroads, unsigned num_of_streets);
#endif