Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej

Czym jest NP-trudność?

Okładka posta: Czym jest NP-trudność?
Ta treść została automatycznie przetłumaczona z ukraińskiego.
NP-trudność - to klasa problemów, dla których bardzo trudno znaleźć rozwiązanie, ale łatwo sprawdzić poprawność już gotowego. Innymi słowy, jeśli zgadłeś odpowiedź, to można ją szybko zweryfikować, ale sam proces poszukiwania zajmuje niezwykle dużo czasu.
Przykłady problemów NP-trudnych:
  • Problem komiwojażera - jak znaleźć najkrótszą trasę, która przechodzi przez wszystkie miasta.
  • Plan zajęć - stworzyć optymalny plan tak, aby wszyscy nauczyciele, sale i studenci zgrali się bez konfliktów.
  • Podział na podzbiory - podzielić zbiór liczb na grupy o równej sumie.
Gdzie to jest ważne w życiu codziennym:
  • Logistyka i trasy dostaw.
  • Planowanie produkcji i harmonogramów.
  • Kryptografia i bezpieczeństwo danych.
Prosty przykład w Ruby do demonstrowania idei pełnego przeszukiwania (na przykładzie podzbiorów):
# NP-trudny problem: wyszukiwanie podzbioru o wymaganej sumie
numbers = [3, 7, 9, 11, 15]
target = 20

solutions = []

(1..numbers.size).each do |k|
  numbers.combination(k).each do |subset|
    solutions << subset if subset.sum == target
  end
end

puts "Znalezione rozwiązania:"
solutions.each { |s| p s }
Wynik:
Znalezione rozwiązania:
[9, 11]
Widać tutaj od razu kilka wariantów. A jeśli zwiększyć tablicę do 20–25 liczb, liczba sprawdzeń gwałtownie wzrośnie - tak właśnie wygląda wybuch kombinatoryczny, przez który podobne problemy NP-trudne stają się praktycznie nierozwiązywalne przez przeszukiwanie.

Ten post nie ma jeszcze żadnych dodatków od autora.

Co to jest stos mózgowy (brain stack)?
28 lip '25 19:37

Co to jest stos mózgowy (brain stack)?

Co to jest przepełnienie całkowite?
15 sie '25 08:28

Co to jest przepełnienie całkowite?

Co to jest plik HAR (HTTP Archive)?
25 sie '25 18:23

Co to jest plik HAR (HTTP Archive)?

Czym jest Bubble Sort (wyjaśnienie algorytmu)?
16 wrz '25 18:42

Czym jest Bubble Sort (wyjaśnienie algorytmu)?

Czym jest wzrost eksponencjalny?
16 wrz '25 18:57

Czym jest wzrost eksponencjalny?

Czym jest złożoność faktorialna?
16 wrz '25 19:03

Czym jest złożoność faktorialna?

Offset vs Cursor Pagination w Rails: co wybrać i dlaczego
24 wrz '25 15:22

Offset vs Cursor Pagination w Rails: co wybrać i dlaczego

Czym jest Row Security w PostgreSQL i po co jest to deweloperom Rails?
4 paź '25 19:06

Czym jest Row Security w PostgreSQL i po co jest to deweloperom Rails?

Czym jest ivar w Ruby / Rails?
19 paź '25 20:12

Czym jest ivar w Ruby / Rails?

Podstawowe metody uwierzytelniania w API
19 paź '25 20:26

Podstawowe metody uwierzytelniania w API

Czym różni się OAuth 1 od OAuth 2
19 paź '25 20:34

Czym różni się OAuth 1 od OAuth 2

Czym jest ORM i po co jest potrzebny?
26 paź '25 14:00

Czym jest ORM i po co jest potrzebny?