using KaTeX

Original author: Michal Švagr
Maintaner: Filip Štěpánek

Citát
Ano je to těžké, ale život je těžký.
prof. Dr. Ing. Zdeněk Hanzálek (2021)

KO

ILP

SP

Troúhelníková nerovnost

Negativní cykly

Bellmanův princip optimality

Algorithm for DAGs

Dijkstra Algorithm

A*

Bellman-Ford Algorithm

DAG

Floyd Algorithm

Johnson’s algorithm

FLOW

https://rtime.ciirc.cvut.cz/~hanzalek/KO/Flows_e.pdf

LP zadání
Flows LP

Balance

Dynamické flow
- Můžeme přidat čas
- Chceme kumulovat tok na nodech (např. ropa v tankerech, parkoviště)
- Lze převést zpět na max flow (zavedením duplicitních nodů v různých časech)
Dynamic flow

Min-cut

Ford-Fulkerson (Max-Flow)

  1. Vytvoření proveditelného toku
    • Pokud jsou všechny lower boundy nulové, neboli ∀e ∈ E(G); l(e) = 0 můžu jít do kroku 2. s initial flow = 0
    • Pokud nejsou všechny lower-boundy nulové:
      • Vytvoříme cirkulaci (vytvoříme hranu z t do s s l=0 a u=∞)
      • Spočítám balance (pozor, tyto balance jsou odlišné od výše zmíněných!) (l vstupních - l výstupních) a snížím hodnoty l a u o l
      • Přidám nový s’ od kterého povedeme hrany do vrcholů s balancí > 0 s l = 0 a u = balanci
      • Přidám nový t’ do kterého povedeme hrany z vrcholů s balancí < 0 s l = 0 a u = -balanci
      • Zapnu max-flow na novém grafu
      • Výsledné new-flow zadám do starého grafu jako flow = l + new-flow
  2. Inkrementální zlepšování
    • Nejdříve najdeme cestu od s do t takovou, že každá hrana v cestě není plně saturovaná (je možná použít zpetné hrany)
    • Této cestě zvýšíme (snížíme v opačných hranách) tok o maximální možné zlepšení (min z možných zlepšení jednotlivých hran cesty)
    • Opakuji dokud jsem ještě schopen najít zlepšující cestu z s do t

Celočíslenost Ford-Fulkersona

Feasible Flow with Balances

Feasibility flow with balances

Feasible Flow with Balances redukce

Minimum cost flow

Cycle Canceling Algorithm (řeší Minimum cost flow)

  1. Najdeme feasible flow graf
  2. Vytvoříme residuální graf
    • Hrany v grafu zdvojíme
      • Dopředné hrany budou mít hodnoty u = u - flow a c = c
      • Zpětné hrany budou mít hodnoty u = flow - l a c = -c
    • Vyházím hrany s u = 0
  3. Naleznu záporný cyklus (záproný součet cen)
    • γ = součet cen * min(u) v cyklu
    • Upravíme flows v původním grafu o γ aby to dávalo smysl (neporušil jsem kirchofa)
  4. Znovu jdu do bodu 2. dokud existuje negativní cyklus v residuálním grafu

Flows LP

Minimum cost multicommodity flow

Párování

Knapsack

Fractional Knapsack problem

-Stejné jako knapsack, ale předměty nemusíme vkládat celé

R-aproximační algoritmus

Knapsack (0/1 Knapsack)

2-Aproximation algorithm

Dynamic programing

Aproximační schéma

TSP

NP-Hard problémy

Důkaz, že TSP je silně NP-Hard

Obecný r-aproximační algoritmus

Metric TSP

Nearest Neighbor

Double-tree (metric TSP)

Christofides Algorithm (metric TSP)

Tour improvement Heuristic - local seach k-OPT

  1. Máme nějakou Hemiltonovskou kružnici
  2. Smažeme kk hran
  3. Propojíme oddělené tahy novými kk hranami tak aby opět vznikla Hemiltonovská kružnice
  4. Zkontrolujeme zlepšení (nastavitelné kritérium), pokud nezlepšuje => změnu zahodíme

Scheduling

Dáváme všechny tásky zdrojům v čase.

One resurce scheduling


Důjaz že je silně NP-Hard

is NP-Hard

Bratley’s Algorithm

Branch and Bound with LP-bounding

Horn’s algorithm

Chetto, Silly, Bouchentouf algorithm

Paralel identical resource scheduling


McNaughton

LS-aporximation - List scheduling

LPT-aproximation - Longest procesing time first

Rothkopf - dynamické programování (PCmaxP||C_{max})

Muntz&Coffman’s level algorithm (Ppmtn,precCmaxP|pmtn,prec|C_{max})

Project scheduling (α1\alpha _1 = PS) --------------------------------------------

Temporal Constraints

Máme-li úlohu TiT_i a úlohu TjT_j kde z TiT_i do TjT_j existuje hrana s hodnotou lijl_{ij}. Pak to znamená sjsi+lijs_j \ge s_i + l_{ij}.

CP

Global constraints

AC-3 Algorithm