Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Was ist NP-Komplexität?

Beitrags-Cover: Was ist NP-Komplexität?
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.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

Was ist ein Gehirnstapel (brain stack)?
28. Jul, 19:37 Uhr

Was ist ein Gehirnstapel (brain stack)?

meme code
meme code@memecode
Was ist ein Integer-Overflow?
15. Aug, 08:28 Uhr

Was ist ein Integer-Overflow?

meme code
meme code@memecode
Was ist eine HAR-Datei (HTTP-Archiv)?
25. Aug, 18:23 Uhr

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

meme code
meme code@memecode
Was ist Bubble Sort (Erklärung des Algorithmus)?
16. Sep, 18:42 Uhr

Was ist Bubble Sort (Erklärung des Algorithmus)?

meme code
meme code@memecode
Was ist exponentielles Wachstum?
16. Sep, 18:57 Uhr

Was ist exponentielles Wachstum?

meme code
meme code@memecode
Was ist faktoriale Komplexität?
16. Sep, 19:03 Uhr

Was ist faktoriale Komplexität?

meme code
meme code@memecode
Offset vs Cursor Pagination in Rails: was wählen und warum
24. Sep, 15:22 Uhr

Offset vs Cursor Pagination in Rails: was wählen und warum

meme code
meme code@memecode
Was ist Row Security in PostgreSQL und warum ist es für Rails-Entwickler wichtig?
04. Okt, 19:06 Uhr

Was ist Row Security in PostgreSQL und warum ist es für Rails-Entwickler wichtig?

meme code
meme code@memecode
Was ist ivar in Ruby / Rails?
19. Okt, 20:12 Uhr

Was ist ivar in Ruby / Rails?

meme code
meme code@memecode
Hauptmethoden der Authentifizierung in der API
19. Okt, 20:26 Uhr

Hauptmethoden der Authentifizierung in der API

meme code
meme code@memecode
Was unterscheidet OAuth 1 von OAuth 2
19. Okt, 20:34 Uhr

Was unterscheidet OAuth 1 von OAuth 2

meme code
meme code@memecode
Was ist ORM und wozu wird es benötigt?
26. Okt, 14:00 Uhr

Was ist ORM und wozu wird es benötigt?

meme code
meme code@memecode