Ich habe ein binäres Raster, das Texturpixel darstellt, die aktualisiert werden sollen. Die Kosten für das Hochladen dieser Pixel können grob in eine feste (ähnlich einem Header in einem Protokoll) und einen dynamischen Teil aufgeteilt werden, der durch die Upload-Größe bestimmt wird. Beide sind systemabhängig, können aber gemessen werden.Gruppierung in Rechtecke auf einem binären Raster
Dies bedeutet, dass die Kosten für jedes Rechteck anfallen, in dem die Fixkosten (der Transferaufwand) immer gleich sind.
Die Kostenfunktion selbst kann von System zu System variieren; In den meisten Fällen wird es am besten durch eine lineare Funktion wie eine Liniengleichung angenähert, z. cost_per_rectangle = fixed_costs + dynamic_costs rectangle_size, oder kurz c = f + s * d. Aber es kann gut sein, dass diese Funktion logarithmisch oder exponentiell wird, wie c = f + s * log (d) oder c = f + s * d^(1 + etwas).
Hier einige reale Welt Messungen sind, aufgetragen in einem linearen und ein y-log-Diagramm mit Größen von 2 bis 1 M, wobei X die Anzahl der Punkte und Y der Zeit in uns ist:
Ich suche nach einem Algorithmus, der Rechtecke berechnen kann, die alle für die Aktualisierung markierten Zellen abdecken und dabei die Gesamtkosten minimieren.
Die Rechtecke können sich überlappen.
Weil die Kosten für die Berechnung dieser Rechtecke die Gesamtkosten ausmachen, suche ich nach einem effizienten, aber nicht perfekten Algorithmus, obwohl es sehr schön wäre, von der perfekten Lösung zu hören und ob sie NP-fähig ist oder nicht .
Im Moment habe ich keine Ahnung, wie ich das am besten angehen soll, nur ein vages Gefühl, dass vielleicht kd-Bäume helfen könnten.
Hier sind einige Bilder von möglichen Ergebnissen für ein Beispiel Raster:
ich mit dem diagonalen Beispiel einige Versuch und Irrtum-Tests haben und gefunden eine optimale Rechteckgröße für das Diagonalbeispiel durch Vergleichen der Upload-Zeiten für alle möglichen Größen.
Dies ist derzeit sehr unklar - können Sie einige Beispiele hinzufügen, um all dies zu erklären? – Dukeling
@Dukeling Ich habe ein paar Beispielbilder hinzugefügt. –
Ich habe immer noch Schwierigkeiten, die Kosten zu verstehen. Sind die Fixkosten einmal (für das Raster) oder einmal für jedes Rechteck? Ist der dynamische Teil linear proportional zur Anzahl der gesendeten Zellen (über alle Rechtecke) (z. B. 2 Einheiten pro Zelle, so würde ein 2x2 2 \ * 4 = 8 Einheiten und ein 5x5 und ein 3x3 Rechteck 2 \ * (25 + 9) = 68 Einheiten) oder gibt es eine andere Skalierung? Suchen Sie nach einem Algorithmus, der darauf abzielt, die Gesamtkosten für bestimmte fixe und dynamische Kosten zu minimieren, oder haben Sie Kosten und suchen Sie nur nach einem Algorithmus für diese spezifischen Kosten? – Dukeling