← StartseiteProgrammierung (Програмування)

Was ist NP-Komplexität?

NP-Schwierigkeit ist eine Klasse von Problemen, bei denen es extrem schwierig ist, eine Lösung zu finden, aber eine fertige Antwort schnell überprüft werden kann. Beispiele: das Reiseverkäuferproblem, optimale Zeitplä...

Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
NP-Schwierigkeit - ist eine Klasse von Aufgaben, für die es sehr schwierig ist, eine Lösung zu finden, aber einfach, die Richtigkeit einer bereits gefundenen zu überprüfen. Mit anderen Worten, wenn Sie die Antwort erraten haben, können Sie sie schnell überprüfen, aber der Prozess der Suche selbst dauert extrem lange.
Beispiele für NP-schwierige Aufgaben:
  • Das Handelsreisendenproblem - wie man die kürzeste Route findet, die durch alle Städte führt.
  • Stundenplan - einen optimalen Stundenplan erstellen, sodass alle Dozenten, Räume und Studenten ohne Konflikte zusammenpassen.
  • Teilmenge - eine Menge von Zahlen in Gruppen mit der gleichen Summe aufteilen.
Wo das im echten Leben wichtig ist:
  • Logistik und Lieferwege.
  • Produktions- und Zeitplanungsplanung.
  • Kryptografie und Datensicherheit.
Ein einfaches Ruby-Beispiel zur Demonstration der Idee der vollständigen Durchsuchung (am Beispiel von Teilmengen):
# NP-schwierige Aufgabe: Suche nach einer Teilmenge mit der gewünschten Summe
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 "Gefundene Lösungen:"
solutions.each { |s| p s }
Ergebnis:
Gefundene Lösungen:
[9, 11]
Hier sind sofort mehrere Varianten sichtbar. Und wenn man das Array auf 20–25 Zahlen erhöht, steigt die Anzahl der Überprüfungen sprunghaft an - so sieht der kombinatorische Explosion aus, durch die solche NP-schwierigen Aufgaben durch vollständige Durchsuchung praktisch unlösbar werden.

🔥 Weitere Beiträge

Alle Beiträge
Was ist ein Integer-Overflow?
Programmierung (Програмування)15. Aug '25, 08:28 Uhr

Was ist ein Integer-Overflow?

Integer Overflow — das ist die Überlauf eines Ganzzahltyps, wenn der Wert die Grenze des Variable...

Was ist eine HAR-Datei (HTTP-Archiv)?
Programmierung (Програмування)25. Aug '25, 18:23 Uhr

Was ist eine HAR-Datei (HTTP-Archiv)?

HAR-Datei (HTTP-Archiv) — ist ein .har-Format, das das Protokoll der Browserinteraktion mit dem N...

Was ist faktoriale Komplexität?
Programmierung (Програмування)16. Sep '25, 19:03 Uhr

Was ist faktoriale Komplexität?

Faktorielle Komplexität ist das schnelle Wachstum der Anzahl der Varianten, wenn für n Elemente m...

Was ist ivar in Ruby / Rails?
Programmierung (Програмування)19. Okt '25, 20:12 Uhr

Was ist ivar in Ruby / Rails?

ivar in Ruby ist eine Instanzvariable, die mit @ gekennzeichnet ist. In Rails überträgt sie Daten...

Was unterscheidet OAuth 1 von OAuth 2
Programmierung (Програмування)19. Okt '25, 20:34 Uhr

Was unterscheidet OAuth 1 von OAuth 2

Der Beitrag erzählt von OAuth 1 und OAuth 2: ihrer Geschichte, ihrem Zweck, den Unterschieden, de...

Was ist ORM und wozu wird es benötigt?
Programmierung (Програмування)26. Okt '25, 14:00 Uhr

Was ist ORM und wozu wird es benötigt?

ORM ist eine Technologie, die es ermöglicht, mit Datenbanken über Code-Objekte zu arbeiten, die E...