dodan teden 3
This commit is contained in:
parent
d86963fa96
commit
461462f481
6 changed files with 62 additions and 1 deletions
|
|
@ -5,4 +5,5 @@ Dobrodošli na repozitoriju predmeta **Aproksimacijski in naključnostni algorit
|
|||
## Vsebina po tednih
|
||||
|
||||
1. Uvod in osnovni modeli računanja
|
||||
2. NP, prevedbe in NP-polnost
|
||||
2. NP, prevedbe in NP-polnost
|
||||
3. Še prevedbe, vmesni problemi, diagonalizacija
|
||||
BIN
p02/p02.pdf
BIN
p02/p02.pdf
Binary file not shown.
BIN
p02/sat/kraljice.limboole
Normal file
BIN
p02/sat/kraljice.limboole
Normal file
Binary file not shown.
42
p02/sat/kraljice.py
Normal file
42
p02/sat/kraljice.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
import sys
|
||||
def main(N):
|
||||
lines = []
|
||||
# --- Row constraints: one queen per row ---
|
||||
for r in range(N):
|
||||
# At least one queen in row r
|
||||
row_vars = [f"q_{r}_{c}" for c in range(N)]
|
||||
lines.append(" | ".join(row_vars))
|
||||
|
||||
# At most one queen in row r (pairwise exclusion)
|
||||
for c1 in range(N):
|
||||
for c2 in range(c1 + 1, N):
|
||||
lines.append(f"!q_{r}_{c1} | !q_{r}_{c2}")
|
||||
|
||||
# --- Column constraints: one queen per column ---
|
||||
for c in range(N):
|
||||
col_vars = [f"q_{r}_{c}" for r in range(N)]
|
||||
lines.append(" | ".join(col_vars))
|
||||
|
||||
# At most one queen in column c
|
||||
for r1 in range(N):
|
||||
for r2 in range(r1 + 1, N):
|
||||
lines.append(f"!q_{r1}_{c} | !q_{r2}_{c}")
|
||||
|
||||
# --- Diagonal constraints ---
|
||||
for r1 in range(N):
|
||||
for c1 in range(N):
|
||||
for r2 in range(N):
|
||||
for c2 in range(N):
|
||||
if (r1, c1) < (r2, c2): # avoid duplicates
|
||||
if abs(r1 - r2) == abs(c1 - c2): # same diagonal
|
||||
lines.append(f"!q_{r1}_{c1} | !q_{r2}_{c2}")
|
||||
|
||||
|
||||
# first add parentheses for clarity
|
||||
lines = [f"({line})" for line in lines]
|
||||
print("\n & ".join(lines))
|
||||
|
||||
if __name__ == "__main__":
|
||||
N = int(sys.argv[1]) if len(sys.argv) > 1 else 8
|
||||
main(N)
|
||||
18
p02/sat/urnik.limboole
Normal file
18
p02/sat/urnik.limboole
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
% A1: Vsaj en slot za vsak predmet
|
||||
( (X1_A | X1_B | X1_F) & (X2_B | X2_C) & (X3_C | X3_D | X3_F) & (X4_B | X4_D | X4_F) )
|
||||
|
||||
% A2: Največ en slot za vsak predmet
|
||||
& ( (!X1_A | !X1_B) & (!X1_A | !X1_F) & (!X1_B | !X1_F)
|
||||
& (!X2_B | !X2_C)
|
||||
& (!X3_C | !X3_D) & (!X3_C | !X3_F) & (!X3_D | !X3_F)
|
||||
& (!X4_B | !X4_D) & (!X4_B | !X4_F) & (!X4_D | !X4_F) )
|
||||
|
||||
% B: Največ en predmet za vsak slot
|
||||
& ( % Termin B (P1, P2, P4)
|
||||
(!X1_B | !X2_B) & (!X1_B | !X4_B) & (!X2_B | !X4_B)
|
||||
% Termin C (P2, P3)
|
||||
& (!X2_C | !X3_C)
|
||||
% Termin D (P3, P4)
|
||||
& (!X3_D | !X4_D)
|
||||
% Termin F (P1, P3, P4)
|
||||
& (!X1_F | !X3_F) & (!X1_F | !X4_F) & (!X3_F | !X4_F) )
|
||||
BIN
p03/p03.pdf
Normal file
BIN
p03/p03.pdf
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue