Heim Backend-Entwicklung PHP-Tutorial Minimale Kosten für die Verbindung zweier Punktgruppen

Minimale Kosten für die Verbindung zweier Punktgruppen

Sep 01, 2024 am 06:34 AM

1595. Minimale Kosten für die Verbindung zweier Punktgruppen

Schwierigkeit:Schwer

Themen: Array, dynamische Programmierung, Bitmanipulation, Matrix, Bitmaske

Sie erhalten zwei Gruppen von Punkten, wobei die erste Gruppe die Größe1 Punkte hat, die zweite Gruppe die Größe2 Punkte hat und die Größe1 > = Größe2.

Die Kosten der Verbindung zwischen zwei beliebigen Punkten werden in einer Größe1 x Größe2-Matrix angegeben, wobei cost[i][j] die Kosten für die Verbindung von Punkt i sind der ersten Gruppe und Punkt j der zweiten Gruppe. Die Gruppen sind verbunden, wenn jeder Punkt in beiden Gruppen mit einem oder mehreren Punkten in der gegenüberliegenden Gruppe verbunden ist. Mit anderen Worten: Jeder Punkt der ersten Gruppe muss mit mindestens einem Punkt der zweiten Gruppe verbunden sein, und jeder Punkt der zweiten Gruppe muss mit mindestens einem Punkt der ersten Gruppe verbunden sein.

Geben Sie die Mindestkosten zurück, die für die Verbindung der beiden Gruppen erforderlich sind.

Beispiel 1:

Minimum Cost to Connect Two Groups of Points

  • Eingabe: Kosten = [[15, 96], [36, 2]]
  • Ausgabe: 17
  • Erklärung: Der optimale Weg, die Gruppen zu verbinden, ist:
  1--A
  2--B
  This results in a total cost of 17.
Nach dem Login kopieren

Beispiel 2:

Minimum Cost to Connect Two Groups of Points

  • Eingabe: Kosten = [[1, 3, 5], [4, 1, 1], [1, 5, 3]]
  • Ausgabe: 4
  • Erklärung: Die optimale Art, die Gruppen zu verbinden, ist:
  1--A
  2--B
  2--C
  3--A
  This results in a total cost of 4.
Nach dem Login kopieren

Beachten Sie, dass mehrere Punkte mit Punkt 2 in der ersten Gruppe und Punkt A in der zweiten Gruppe verbunden sind. Dies spielt keine Rolle, da die Anzahl der Punkte, die verbunden werden können, unbegrenzt ist. Wir kümmern uns nur um die minimalen Gesamtkosten.

Beispiel 3:

  • Eingabe: Kosten = [[2, 5, 1], [3, 4, 7], [8, 1, 2], [6, 2, 4], [3, 8, 8] ]
  • Ausgabe: 10

Einschränkungen:

  • Größe1 == cost.length
  • Größe2 == Kosten[i].Länge
  • 1 <= Größe1, Größe2 <= 12
  • Größe1 >= Größe2
  • 0 <= Kosten[i][j] <= 100

Hinweis:

  1. Jeder Punkt auf der linken Seite wäre entweder mit genau einem Punkt verbunden, der bereits mit einem linken Knoten verbunden ist, oder mit einer Teilmenge der Knoten auf der rechten Seite, die mit keinem Knoten verbunden sind
  2. Verwenden Sie dynamische Programmierung mit Bitmaskierung, wo der Status sein wird (Anzahl der in der ersten Gruppe zugewiesenen Punkte, Bitmaske der in der zweiten Gruppe zugewiesenen Punkte).

Lösung:

Wir können die dynamische Programmierung mit Bitmasking nutzen. Die Idee besteht darin, die Kosten zu minimieren, indem jeder Punkt in der ersten Gruppe berücksichtigt und versucht wird, ihn mit allen Punkten in der zweiten Gruppe zu verbinden.

Dynamischer Programmieransatz (DP) mit Bitmaskierung

Schritte:

  1. Staatsvertretung:

    • Verwenden Sie eine DP-Tabelle dp[i][mask], wobei:
      • i ist der Index in der ersten Gruppe (im Bereich von 0 bis size1-1).
      • Maske ist eine Bitmaske, die darstellt, welche Punkte in der zweiten Gruppe verbunden wurden.
  2. Zustandsübergang:

    • Versuchen Sie, jeden Punkt in der ersten Gruppe mit jedem Punkt in der zweiten Gruppe zu verbinden, und aktualisieren Sie die DP-Tabelle entsprechend.
    • Wenn ein neuer Punkt in der zweiten Gruppe verbunden wird, aktualisieren Sie das entsprechende Bit in der Maske.
  3. Basisfall:

    • Beginnen Sie mit dp[0][0] = 0 (anfangs keine Verbindungen).
  4. Ziel:

    • Berechnen Sie die Mindestkosten für dp[size1][(1 << size2) - 1], die die Verbindung aller Punkte aus beiden Gruppen darstellen.

Lassen Sie uns diese Lösung in PHP implementieren: 1595. Minimale Kosten für die Verbindung zweier Punktgruppen






Erläuterung:

  • Das DP-Array dp[i][mask] speichert die Mindestkosten für die Verbindung der ersten i Punkte aus Gruppe 1 mit den Punkten in Gruppe 2, wie durch mask angegeben.
  • Die verschachtelten Schleifen durchlaufen jede Kombination aus i und mask und versuchen, die optimalen Kosten zu finden, indem sie alle möglichen Verbindungen berücksichtigen.
  • Am Ende berechnet die Lösung die Mindestkosten unter Berücksichtigung der Szenarien, in denen einige Punkte in der zweiten Gruppe möglicherweise noch nicht verbunden sind, und stellt sicher, dass alle Punkte verbunden sind.

Dieser Ansatz geht effizient mit den Einschränkungen des Problems um und stellt die minimalen Kosten für die Verbindung der beiden Gruppen sicher.

Kontaktlinks

Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!

Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:

  • LinkedIn
  • GitHub

Das obige ist der detaillierte Inhalt vonMinimale Kosten für die Verbindung zweier Punktgruppen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) 11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) Mar 03, 2025 am 10:49 AM

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)

Einführung in die Instagram -API Einführung in die Instagram -API Mar 02, 2025 am 09:32 AM

Einführung in die Instagram -API

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Arbeiten mit Flash -Sitzungsdaten in Laravel

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Mar 04, 2025 am 09:33 AM

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

12 Beste PHP -Chat -Skripte auf Codecanyon

Ankündigung von 2025 PHP Situation Survey Ankündigung von 2025 PHP Situation Survey Mar 03, 2025 pm 04:20 PM

Ankündigung von 2025 PHP Situation Survey

See all articles