Mehr

Rechtecksatz (keine Quadrate) in Dreiecke mit ArcGIS for Desktop schneiden?


Ich habe einige große Features, die ich für die Geländeausrichtung durch Scheitelpunkte in einem anderen Programm in kleinere Teile aufteilen muss. Ich dachte, Dreiecke wären die beste Lösung.

Also im Grunde möchte ich das drehen:

das sehr gut finden:

Leider ist das letztere Bild ein Mockup. Ich hatte einige Erfolge mit dem Netzwerkzeug und dem Schneiden, um Rechtecke zu erstellen, aber ich bekomme keine Dreiecke daraus. Das Drehen des Netzes funktioniert nicht, da die Rechtecke nicht quadratisch sind. Irgendwelche Ideen, die kein manuelles Schneiden beinhalten?


Eine von mehreren Lösungen. Erstellen Sie Punkte innerhalb des Polygons, Fischnetz reicht aus. Fügen Sie diesem Satz Eckpunkte von Polygonen hinzu. TIN erstellen. Exportiere Blechdreiecke und beschneide sie:

Aktualisierte Antwort zur Punkteerstellung. Das folgende Skript funktioniert von ArcGIS und verwendet 3 Parameter:

  1. Schicht im Inhaltsverzeichnis. Wird verwendet, um den Umfang zu definieren.
  2. Abstand zwischen Punkten, Typ double
  3. Punkte-Layer (leer)

import arcpy, traceback, os, sys ExtentLayer = arcpy.GetParameterAsText(0) xStep = float(arcpy.GetParameterAsText(1)) destLayer = arcpy.GetParameterAsText(2)

try: def showPyMessage(): arcpy.AddMessage(str(time.ctime()) + " - " + message) def isLayerExist(lName): layer = arcpy.mapping.ListLayers(mxd,lName)[0] ext=layer .getSelectedExtent() return (layer,ext) mxd = arcpy.mapping.MapDocument("CURRENT") destLayer, anExt=isLayerExist(destLayer) ExtentLayer, anExt=isLayerExist(extentLayer) yMin,yMax,xS,xE=anExt.YMin, anExt.YMax,anExt.XMin,anExt.XMax yStep=xStep/2*math.pow(3.0,0.5) curT = arcpy.da.InsertCursor(destLayer,"[email protected]") p=arcpy.Point() iMax=int ((yMax-yMin)/yStep)+2 jMax=int((xE-xS)/xStep)+2 für i im Bereich(iMax): Y=yMin+i*yStep xStart=xS+i%2*xStep/ 2 xEnd = xE +i%2*xStep/2 für j im Bereich(jMax): X=xStart+j*xStep pX,pY=X,Y theRow=(p,) curT.insertRow(theRow) außer: Nachricht = "
*** PYTHON-FEHLER *** "; showPyMessage() message = "Python Traceback Info: " + traceback.format_tb(sys.exc_info()[2])[0]; showPyMessage() message = "Python-Fehlerinfo: " + str(sys.exc_type)+": " + str(sys.exc_value) + "
"; showPyMessage()

Geometrie-Kurzwarenproblem - Variation von quadratischen zu gleichseitigen Dreiecken

Lassen Sie mich an das Problem des Kurzwarenladens erinnern, das 1907 vom Rätselkomponisten Henry Dudeney vorgeschlagen wurde. Zerlege ein gleichseitiges Dreieck mit nur drei Schnitten in ein Quadrat.

Ich möchte die Variante des Kurzwarenproblems vorschlagen. Stellen Sie sich das Quadrat aus zweifarbigem Papier vor. So - eine Seite rot und die andere gelb:

Hier ist meine Variation des Rätsels, verfeinert nach Kommentaren
Schneiden Sie das Quadrat mit der geringsten Anzahl von Schnitten, um ein gleichseitiges Dreieck zu bilden, vorausgesetzt, dass:

  1. Mindestens ein Element wird auf die andere Seite gedreht.
  2. Mindestens ein Element bleibt auf seiner ursprünglichen Seite.
  3. Das umgedrehte Element ist asymmetrisch.

(Ich würde mich sehr über Vorschläge freuen, das Rätsel in weniger Worten umzuformulieren.)

Nehmen wir an, wir haben ein Quadrat mit Rot auf einer Seite und Gelb auf der anderen Seite. Ausgehend von einem komplett roten Quadrat bauen wir ein rot-gelbes Dreieck. Die dritte Bedingung verbietet das Umdrehen gleichschenkliger Dreiecke oder Quadrate. Mit anderen Worten, das umgedrehte Element darf nicht nicht umgedreht bleiben.

Ich vermute, dass es eine Lösung gibt:

Diese Lösungen möchte ich finden. Ich möchte alle trivialen Lösungen ausschließen, die auf asymmetrischen spiegelförmigen Figuren wie den Buchstaben db basieren.

Aktualisieren. Bitte seien Sie aufmerksam. Die Formen in der Originallösung von Henry Dudeney sind nicht symmetrisch. Genaue Maßnahmen werden hier vorgestellt:


Trapezförmiger Flächennachweis durch Aufteilung in zwei Dreiecke?

Ich versuche herauszufinden, wie die Formel für die Fläche eines Trapezes mit genau zwei parallelen Seiten hergeleitet wird. In meinem Lehrbuch steht, dass man die Formel für die Fläche eines Trapezes herleitet, indem man das Trapez in zwei Dreiecke teilt, eines mit Grundfläche a und Höhe h und eines mit Grundfläche b und Höhe h.

Ich habe dieses Diagramm in GeoGebra gezeichnet. Es ist vielleicht nicht maßstabsgetreu (es ist nicht deckungsgleich) mit dem Diagramm in meinem Lehrbuch, aber es ist tatsächlich ähnlich. Ich habe tatsächlich das Diagramm aus meinem Lehrbuch gescannt und dann dieses Diagramm darüber erstellt. Im Lehrbuch haben sie die Eckpunkte nicht markiert. Aber ich habe die Scheitelpunkte (blau) benannt, um die Erklärung zu vereinfachen, damit wir uns auf etwas beziehen können.

Die obige Formel ist die, die im Lehrbuch angegeben ist.

Macht das für Sie allein vom Aussehen her überhaupt Sinn? Sie zeichneten dieses Diagramm und nannten die Seiten davon als a, b, c und d. Sie zeichneten auch die Höhe h und die Diagonale DB.

Ich kann den Zusammenhang mit der Formel nicht herstellen. Und ich habe einen tatsächlichen Beweis für die Fläche eines Trapezes wie dieses auf einer Website gesehen. Für die Fläche eines Trapezes gibt es mindestens zwei verschiedene Beweise. Der vielleicht gebräuchlichste Beweis ist, dass Sie das Trapez in zwei Dreiecke und ein Rechteck aufteilen würden. Aber zwei Dreiecke.

Was ich also bitte, ist, dass mir jemand einen Beweis dafür liefert, dass die Formel für die Fläche eines Trapezes abgeleitet werden kann, indem man das Trapez in zwei Dreiecke teilt, wie in diesem Diagramm gezeigt.

Ich weiß, dass die Fläche eines Dreiecks die Basis mal die Höhe geteilt durch zwei ist oder 1/2 mal die Basis mal die Höhe. Es ist im Wesentlichen die Hälfte der Fläche des Rechtecks. Wenn ich also den ersten Teil der obigen Formel betrachte, bekomme ich dies.

(Das Hochladen von Bildern auf Imgur funktioniert im Moment nicht. Ich werde darauf zurückkommen.)

Ich habe die Höhen-DF kontrahiert. Die Fläche für das Dreieck DBE beträgt die Hälfte der Fläche von DFBE.

$[BGA]=$

Ich habe die Höhe AH konstruiert. Die Fläche des Dreiecks BHA beträgt die Hälfte der Fläche von BEHA.

Aber das gibt mir das überlappende Dreieck GBH. Es überlappt mit Dreieck DBE. Ist die Fläche von GBH gleich der Fläche von AGD?

Und was ist mit den Dreiecken EBC und DFA?

Ich glaube, ich habe es jetzt verstanden. Hier ist also wieder das zweite Diagramm.

Und hier ist noch einmal das dritte Diagramm.

Sie sind diesmal nicht gleich groß. Ich glaube, ich habe die Skalierung beim Exportieren in ein PNG-Bild falsch verstanden. Aber hier können Sie sehen, dass ich die Flächen der Rechtecke und Dreiecke schattiert und gemessen habe, um zu zeigen, wie sie mit der Fläche des Trapezes interagiert.

Ich weiß, dass dies nicht wirklich ein formaler Beweis für die Fläche eines Trapezes ist. Aber ich denke, das macht jetzt Sinn für mich. Ich war verwirrt von der Tatsache, dass das Dreieck ABD keine Höhe oder Höhe hatte. Oder es war nicht innerhalb des Dreiecks selbst, es war außerhalb des Dreiecks. Und es fiel mir auch schwer zu sehen, wie das überlappender Teil GHB "transformiert" (oder wie auch immer Sie es nennen wollen) in diesen anderen leeren Raum. Aber jetzt sehe ich es deutlicher.

Das kommt also wirklich aus der Formel der Fläche eines Dreiecks? Oder können wir vielleicht sagen, dass die Fläche eines Dreiecks als Postulat verwendet wird, um die Fläche eines Trapezes zu beweisen?


Wenn der Kunststoff nicht zu dick ist, können Sie Folgendes versuchen:

  1. Bedecke die Oberfläche des Plastiks mit Kreppband, damit du es nicht zerkratzt.
  2. Markieren Sie das Rechteck, das Sie ausschneiden möchten.
  3. Mit einem sehr scharfen Messer die Kanten des Rechtecks ​​gegen die Seite eines Metalllineals einritzen.
  4. Schneiden Sie mit dem Messer immer tiefere Rillen, bis Sie das Rechteck schließlich herausdrücken können.
  5. Feilen Sie alle rauen Kanten ab und entfernen Sie das Klebeband.

Bohren Sie ein 6-mm-Loch und öffnen Sie es mit einem Stufenbohrer auf mindestens 10 mm. Ein Stufenbohrer ist der beste Weg, um große Löcher in dünne Materialien zu bohren, er greift nicht so stark wie ein großer Spiralbohrer.

Verwenden Sie dann einen "Handknabber", um es rechteckig zu öffnen. Mit dem Stufenbohrer können Sie größere Löcher bohren, um das Knabbern zu reduzieren.

Ich habe die Ausschnitte für dieses Projekt mit einem Knabber gemacht:

Die Frage ist alt, aber ich hatte auch große Mühe, sie richtig zu stellen, daher lohnt es sich, sie zu beantworten.

Zeichnen Sie das Rechteck mit einem Bleistift oder einem dünnen Filzstift. Sie können es später reinigen. Manchmal zeichne ich das ganze Panel in Millimeterpapier und klebe es auf die Plastikbox, damit die Dinge perfekt ausgerichtet und verteilt sind. Stellen Sie sicher, dass Sie die Messungen richtig gemacht haben.

Machen Sie mit einem 1 mm oder kleineren Bohrer (Sie haben wahrscheinlich einen zum Bohren von Leiterplatten) ein Loch an jeder Ecke des Rechtecks. Zeichnen Sie mit einem Lineal und den Löchern als Führung ein X über das Rechteck und machen Sie ein 1 mm großes Loch in der Mitte, wo sich die Linien schneiden.

Machen Sie mit einem größeren Bohrer und unter Verwendung des 1-mm-Lochs als Führung das mittlere Loch groß genug, um ein Stichsägeblatt aufzunehmen.

Schneiden Sie mit der Stichsäge vorsichtig entlang der X-Linien, bis Sie die 1 mm Löcher an den Ecken erreichen. Dadurch bleiben 4 Dreiecke.

Machen Sie mit einem sehr scharfen Messer (ich verwende einen Cutter) und einem Lineal vorsichtig einen Einschnitt entlang der Kanten des Rechtecks, wobei Sie die Löcher an den Ecken als Führung verwenden. Vielleicht möchten Sie immer halb von der Ecke zur Mitte schneiden, um die gegenüberliegende Ecke nicht zu beschädigen. Machen Sie den Schnitt immer tiefer, während Sie das Dreieck drücken, bis Sie es abbrechen können. Wenn Sie können, tun Sie es auf beiden Seiten, um einen saubereren Schnitt zu erzielen.


Fünf gleiche Quadrate können in insgesamt neun Teile geschnitten werden, die wieder zu einem einzigen Quadrat zusammengesetzt werden können. Sehen Sie sich diese Wolfram-Demonstration an.

EDIT: Du schneidest vier der (Einheits-)Quadrate in jeweils zwei Teile und genauso: Du schneidest entlang einer Linie von einer Ecke zum Mittelpunkt einer Seite. Die beiden Teile jedes dieser Quadrate können wieder zusammengesetzt werden, um ein rechtwinkliges Dreieck mit den Seiten 1 und 2 und der Hypotenuse $sqrt5$ zu bilden. Die vier Dreiecke können dann um das verbleibende Quadrat gelegt werden, um das große Quadrat mit der Seite $sqrt5$ zu bilden.

Wenn Sie es umgekehrt sehen möchten, beginnen Sie mit dem großen Quadrat und schneiden Sie von jeder Ecke zum Mittelpunkt einer Seite Nordwestecke zur Südseite, Nordostecke zur Westseite, SE zu N und SW zu E. Das schneidet die großes Quadrat in 9 Teilen. Einer der 9 Teile ist ein Quadrat. Die anderen 8 sind 4 kleine Dreiecke und 4 Trapeze. Jedes Dreieck kann an ein Trapez angepasst werden, um ein weiteres kleines Quadrat zu bilden.


Bedecken Sie ein konkaves Polygon mit einer minimalen Anzahl von Rechtecken

Ich versuche, ein einfaches konkaves Polygon mit einem Minimum an Rechtecken abzudecken. Meine Rechtecke können eine beliebige Länge haben, aber sie haben maximale Breiten und das Polygon wird nie einen spitzen Winkel haben.

Ich dachte darüber nach, zu versuchen, mein konkaves Polygon in Dreiecke zu zerlegen, die eine Reihe von sich minimal überlappenden Rechtecken erzeugen, die jedes Dreieck minimal begrenzen, und diese Rechtecke dann zu größeren zusammenzuführen. Ich glaube jedoch nicht, dass dies für kleine Kerben in den Kanten des Polygons funktioniert. Die Dreiecke, die durch die Reflexscheitelpunkte auf diesen Kerben erzeugt werden, erzeugen die falschen Rechtecke. Ich suche nach Rechtecken, die Kerben überspannen / ignorieren.

Ich weiß nicht wirklich etwas über Computergeometrie, daher bin ich mir nicht wirklich sicher, wie ich mit der Frage beginnen soll.

Ich habe andere Beiträge gefunden, die ähnlich waren, aber nicht das, was ich brauche:

Einige Beispiele: Schwarz ist die Eingabe. Rot ist die akzeptable Ausgabe.

Ein weiteres Beispiel: Die zweite Ausgabe wird bevorzugt. Es ist jedoch wahrscheinlich notwendig, beide Ausgaben zu generieren und einen anderen Faktor zu verwenden, um die Präferenz zu bestimmen, und liegt nicht in der Verantwortung dieses Algorithmus.

Polygone, die Kurven nachahmen, sind äußerst selten. In diesem Szenario wird ein Großteil der Fläche der Rechtecke verschwendet. Dies ist jedoch akzeptabel, da jedes Rechteck die Beschränkung der maximalen Breite einhält.

Außerdem fand ich diesen Artikel in der Nähe von dem, was ich brauche:

Vielleicht ist eine bessere Frage "Wie kann ich rechteckige Teile eines konkaven Polygons identifizieren?"

Hier ist ein Bild, das die gewünschte Implementierung zeigt:

Das Grün ist der tatsächliche Materialverbrauch. Die roten Rechtecke sind die Layouts. Das Blau ist der MBR des gesamten Polygons. Ich denke, ich sollte versuchen, kleine MBRs zu bekommen und sie auszufüllen. Die 2-3 grünen Rechtecke in der oberen linken Ecke, die in die Mitte des Polygons enden, sind teuer. Das möchte ich minimieren. Die grünen Rechtecke haben eine minimale und maximale Breite und Höhe, aber ich kann so viele Zeilen und Spalten verwenden, wie nötig, um eine Region abzudecken. Auch hier muss ich die Anzahl der Rechtecke minimieren, die sich nicht über die Eingabe erstrecken. Ich kann auch die Form des grünen Rechtecks ​​an kleine Stellen anpassen, was auch sehr teuer ist. Mit anderen Worten, es ist ideal, so viele Rechtecke wie möglich zu überspannen.

Vielleicht sollte ich einfach versuchen, rechteckige Bereiche wie folgt zu identifizieren:

Oder vielleicht wäre ein besserer Ansatz die Verwendung von Rechtecken mit der größten Beschriftung anstelle von MBRs. Ich könnte mein Polygon kontinuierlich mit Rechtecken verkleinern, bis ich Regionen habe, in denen das größte Rechteck keine Kante mit dem ursprünglichen Polygon teilt. Die restlichen Regionen müssten mit einem heuristischen Ansatz behandelt werden.

Ich habe mit den Engineering- und Fertigungsabteilungen meines Unternehmens zusammengearbeitet, um dieses Problem zu klären. Ich warte immer noch auf die Bestätigung, aber ich denke jetzt, dass ein Algorithmus funktionieren würde, der Sätze der größten eingeschriebenen Rechtecke zurückgibt. Obwohl es die Form nicht vollständig abdeckt, würde es den orthogonalen Regionen den Vorzug geben, während die nicht orthogonalen Regionen einigen Heuristiken überlassen werden. Der einzige Trick besteht darin, diese orthogonalen Regionen zu maximieren.


3 Antworten 3

Wie Noam Elkies beobachtet hat, kann jede akute nicht gleichschenklig Dreieck kann durch drei paarweise nicht kongruente gleichschenklige Dreiecke gekachelt werden, indem jeder Scheitelpunkt mit dem Umkreismittelpunkt verbunden wird. Es gibt viele Möglichkeiten, ein Rechteck in nicht kongruente nicht gleichschenklige Dreiecke zu unterteilen, von denen jedes durch drei gleichschenklige Dreiecke ersetzt werden kann, und ich denke, es sollte einfach sein, eine Partition zu finden, für die diese Konstruktion nicht kongruente gleichschenklige Dreiecke erzeugt .

Seien $ A B C D in mathbb R^2 $ die Eckpunkte eines Rechtecks, wobei $ A+C=B+D=mathbb 0 $ der Ursprung ist. Sei $ E $ zum Intervall $ BD, $ und so, dass $ AE $ und $ BD $ senkrecht aufeinander stehen.

Dann erhalten wir die folgende Zerlegung des Quadrats in sechs gleichschenklige Dreiecke (die Eckpunkte auf der Symmetrielinie werden als die Mitte der drei Eckpunkte aufgeführt):

$ A frac2 E $ $ B frac2 E $ $ A frac2 E $ $ D frac2 E $ $ Bquad mathbb 0quad C $ $ Cquad mathbb 0quad D $

Damit ist das Problem gelöst, mit $ mathbf 6 $ Dreiecken für alle Rechtecke aber Quadrate--nur im Fall eines Quadrats sind einige der gegebenen $ mathbf 6 $ Dreiecke kongruent. Andernfalls erhalten wir drei Dreieckspaare, die die gleiche Fläche innerhalb des Paares haben, aber für die verschiedenen Paare unterschiedlich sind. Und innerhalb des Paares ist ein Dreieck spitz (d. h. alle seine Winkel sind spitz) und eines ist stumpf. Somit sind keine zwei der sechs deckungsgleich.

Im Fall von Quadrat liefert die Konstruktion von @Wolfgang $7$-Dreiecke. Es reicht jedoch $ mathbf 5 $.

Betrachten Sie dann die folgende gleichschenklige Dreieckszerlegung des Quadrats $[01]^2$:

$ (0 0)quad (0 1)quad (1 1) $ $ (0 0)quad (a 0)quad (a a) $ $ (a 0)quad (a a)quad (1 1) $ $ (a 0)quad (frac2, frac 12)quad (1 0) $ $ (1 0)quad (frac2, frac 12)quad (1 1) $


2 Antworten 2

Überlegen Sie, was die andere Antwort gesagt hat, indem Sie die ts in ein Quadrat setzen, aber anstatt es einfach als Quadrat zu belassen, stellen Sie die Formen in einer Liste auf. Verwenden Sie dann True und False, um die verschachtelte Liste als Form zu füllen, dh [[True,True,True],[False,True,False]] für Ihre T-Form. Verwenden Sie dann eine Funktion, um die Formen auf dem Raster zu platzieren. Um die Ergebnisse zu optimieren, erstellen Sie einen Tracker, der darauf achtet, wie viele False in einer neuen Form mit Trues überlappen, die sich bereits im Raster von vorherigen Formen befinden. Die Funktion platziert die Form an der Stelle mit den meisten Überlappungen. Es müssen Änderungen vorgenommen werden, um immer höhere Optimierungen zu erzielen, aber das ist die allgemeine Prämisse, die Sie suchen.

Jemand Lust auf ein Tetris-Spiel (eine Teilmenge Ihres Problems)?

Dies wird als Verpackungsproblem bezeichnet. Ohne vorher zu wissen, mit welchen Formen Sie wahrscheinlich konfrontiert werden, kann es sehr schwierig, wenn nicht unmöglich sein, einen Algorithmus zu entwickeln, der Ihnen die beste Antwort gibt. Wenn es sich bei Ihren Polygonen nicht um "schöne" Polygone (Kreise, Quadrate, gleichseitige Dreiecke usw.) handelt, müssen Sie sich höchstwahrscheinlich mit einer Heuristik begnügen, die Ihnen die meiste Zeit die ungefähr beste Lösung bietet.

Eine allgemeine Heuristik (obwohl je nach Form des Eingabepolygons alles andere als optimal) besteht darin, das Problem zu vereinfachen, indem ein Rechteck um das Polygon gezogen wird, sodass das Rechteck gerade groß genug ist, um das Polygon abzudecken. (Als Beispiel im Diagramm unten zeichnen wir ein rotes Rechteck um ein blaues Polygon.)

Sobald wir dies getan haben, können wir dieses Rechteck nehmen und versuchen, so viele dieses Rechtecks ​​wie möglich in das große Rechteck einzupassen. Dies vereinfacht das Problem in ein Rechteckpackungsproblem, das einfacher zu lösen und mit dem Kopf herumzuwickeln ist. Ein Beispiel für einen Algorithmus dafür finden Sie unter folgendem Link:

Diese Heuristik ist offensichtlich nicht optimal, wenn das fragliche Polygon nicht annähernd die gleiche Form wie ein Rechteck hat, aber es gibt Ihnen eine minimale Grundlinie, mit der Sie arbeiten können, insbesondere wenn Sie nicht viel darüber wissen, wie Ihr Polygon aussehen wird wie (oder es gibt eine hohe Varianz im Aussehen des Polygons). Mit diesem Algorithmus würde es ein großes Rechteck wie folgt ausfüllen:

Hier ist das gleiche Bild ohne die dazwischenliegenden Rechtecke:

Im Fall dieser T-förmigen Polygone ist die Heuristik nicht die beste, die sie sein könnte (tatsächlich könnte es für diese vorgeschlagene Annäherung fast ein Worst-Case-Szenario sein), aber sie würde für andere Arten von Polygonen sehr gut funktionieren.


2 Antworten 2

Dies ist eine sehr interessante Frage. Hier ist ein motivierendes Beispiel, gefolgt von einer mutmaßlichen Lösung.

Betrachten Sie das Problem der Aufteilung des Einheitsquadrats in $28$-Rechtecke, um die maximale Diagonale eines der Rechtecke zu minimieren.

Die Verwendung von $28$ Rechtecken der Form $frac14 imes frac17$ ergibt eine Diagonale von $sqrt+frac1<49>> approxsqrt<0.0829>$

Wenn man $25$ Quadrate der Seite $frac15$ verwendet und dann drei teilt, um $28$ Rechtecke zu erhalten, erhält man die maximale Diagonale $sqrt>=sqrt<0.08>$

Da $28=10+18,$ eine weitere Option ist, ist die Konfiguration unten. Es scheint klar, dass es optimal ist, gleiche Diagonalen zu haben, was das Gleichungssystem $3u+2v=1 ext< und >frac1<36>+u^2=frac1<25>+v^.2$ ergibt die beiden gleichen Seiten der zweiten Gleichung sind das Quadrat der Diagonale. Die Lösung lautet $u=frac<45-13sqrt<5>> <75>$ und $v=frac<-20+13sqrt<5>><50>$ mit Diagonalen $ sqrt><500>>approx sqrt<0.0729>.$ Ich denke, aber behaupte nicht, dass dies optimal ist. Ich denke, es kann gezeigt werden, dass es bei Lösungen, die aus nebeneinander verlaufenden Reihen bestehen, optimal ist.

Das allgemeine Problem ist: Gegeben ein Rechteck mit den Dimensionen $a imes b$ (wobei wir $a le b$ annehmen können) und eine ganze Zahl $n$, finde eine Unterteilung des Rechtecks ​​in $n$ Unterrechtecke in der Form eine Möglichkeit, die längste Diagonale eines Unterrechtecks ​​zu minimieren. Ich denke, dass bei der optimalen Lösung alle Diagonalen gleich sind. Lassen Sie uns jedoch angeben, dass wir unter den Lösungen mit den kürzesten längsten Diagonale diejenigen mit Diagonalen so nahe wie möglich bevorzugen, z. B. solche, die $sum_<1 le i_1 lt i_2 le n>(d_-d_)^2$ wobei $d_i$ die Diagonale des $i$ten Unterrechtecks ​​ist.

Die Idee (dynamisch dargestellt) besteht darin, mit einer Aufteilung des Rechtecks ​​in $j$ Reihen von $k$ Rechtecken zu beginnen, alle Dimensionen $frac mal frac$ wobei $j$ und $k$ ganze Zahlen sind, die mit $jk ge n$ angegeben werden müssen. Dann $jk-n$ Rechtecke entfernen und entweder

  • $j$ Zeilen, $jk-n$ mit $k-1$ Rechtecken und der Rest mit $k$ Rechtecken ODER
  • $k$ Spalten, $jk-n$ mit $j-1$ Rechtecken und der Rest mit $j$ Rechtecken.

Nehmen wir an, es ist der erste Fall, der andere ist derselbe mutatis mutandis. Dann machen wir alle Rechtecke in den defizienten Zeilen die Breite $frac$ und passen Sie dann die Zeilen so an, dass jede der beiden Arten von Rechtecken die gleiche Diagonale hat. Das heißt, wir verwenden Rechtecke der Größe $u imes frac$ und $v imes frac$ wo

Es bleibt noch $j$ und $k$ anzugeben. Wenn die Aufgabe darin bestand, $n$ disjunkte Rechtecke mit der Gesamtfläche $ab$ zu finden und die maximale Diagonale zu minimieren, dann wäre die Lösung $n$ Quadrate der Seite $s=sqrt>$ und Diagonale $sqrt>.$ Wir können das für das gegebene Problem sicherlich nicht besser machen und können das nur dann genau dann gut, wenn $a$ und $b$ beide ganzzahlige Vielfache von $s sind.$ Einen Extremfall beseitigen, der nicht genau passt exactly die spätere Beschreibung: if $a lt s$ dann verwende eine einzelne Reihe von Rechtecken $a imes frac.$ Ansonsten sei $j'=Biglfloorfrac Big floor ext< und >k'=Biglfloorfrac Big floor.$ Betrachten Sie die Auswahlmöglichkeiten $j=j'+1,k=k'$ und $j=j',k=k'+1$. Wenn beide $jk ge n,$ erfüllen, dann probiere beides aus (ich nehme an, dass dasjenige, das $jk$ minimiert, besser ist). Wenn nur einer dies tut, verwenden Sie ihn. Wenn dies auch nicht der Fall ist, verwenden Sie $j=j'+1,k=k'+1.$

Diese Beschreibung hat einen Versuch von bis zu $4$ Fällen. Ein gewisses Maß an Experimentieren, das ich nicht gemacht habe, könnte es einem erlauben, Regeln dafür zu vermuten und dann möglicherweise zu beweisen, welche Entscheidungen für $j,k$ zu treffen sind und welche Auswahl (Zeilen oder Spalten) abgeschnitten werden soll. Es würde auch eine Überprüfung ermöglichen, ob die angegebene Beschreibung funktioniert. Zum Beispiel gehe ich (im ersten Fall) implizit davon aus, dass $j ge jk-n$. Wenn sowohl dies als auch $k ge jk-n$ beim gleichen Unentschieden fehlschlagen können, dann stimmt etwas mit der Beschreibung nicht.


Ein Rechteck mit Quadraten kacheln: Wie einzigartig sind die Minimallösungen?

Dies ist eine Fortsetzung meines letzten Threads über das Kacheln eines $m imes n$-Rechtecks ​​mit Quadraten:

Ich frage mich, inwieweit eine minimale Kachelung ist im Wesentlichen einzigartig, also bis zu Spiegelungen des gesamten Rechtecks ​​oder darin enthaltener (gekachelter) Rechtecke. Ich denke, diese Definition ist gleichbedeutend mit der Aussage, dass die Sammlung der quadratischen Seiten einzigartig ist.

Lassen Sie mich zunächst eine geeignetere Definition von Reduzierbarkeit vorschlagen als im anderen Thread:

Wir nennen ein Rechteck (oder eine minimale Kachelung davon) reduzierbar wenn es in zwei (gekachelte) Rechtecke geteilt werden kann.

Durch ein bisschen herumspielen mit irreduziblen Kacheln habe ich den Eindruck, dass es immer einige der Quadrate gibt, die ein kleineres Rechteck bilden, aber abgesehen von Reflexionen innerhalb dieser kleineren Rechtecke ist eine solche Kachelung einzigartig.

Sind alle irreduziblen Kacheln im Wesentlichen einzigartig?

Enthalten alle minimalen Kacheln ein (gekacheltes) Rechteck?

Die kleinsten irreduziblen Rechtecke sind

$(13,11)quad (17,16)quad (19,16)quad (19,17)quad (19,18)quad (20,17)quad (21,19)quad (25,23)quad $ $ (26,22)quad (27,23)quad (27,25)quad (28,27)quad (29,25)quad (29,27) Quad (31,23)Quad (31,25)Quad $ $ (31,26)Quad (31,27)Quad (31,28)Quad (31,29)Quad (31,30) quad (32,27)quad (32,29)quad (32,31)quad $ $ (33,26)quad (33,28)quad (34,25)quad (34,32 .) )quad (35,31)quad (35,34)quad (36,31)quad (37,29) $ .

Jetzt anschauen reduzierbare Rechtecke:

Beachten Sie, dass ein reduzierbares Rechteck horizontal oder vertikal geteilt werden kann, oft auf mehrere Arten und manchmal auf beides gleichzeitig. Zum Beispiel $f(15,8)=f(7,8)+f(8,8)=f(15,3)+f(15,5)$ . Diese Fliesen sind also alles andere als einzigartig. Aber jetzt:

Wir nennen ein Rechteck (oder eine minimale Kachelung davon) coprime-reduzierbar wenn das Rechteck in zwei (gekachelte) Rechtecke geteilt werden kann, die jeweils gleichfarbige Seiten haben.

Für ein gegebenes $mle 85$ ist die Mehrheit (im Durchschnitt etwa 90%) der $mmal n $ Rechtecke mit $nlt m$ reduzierbar. Aber im ganzen Sortiment gibt es Nein Rechteck, das coprime-reduzierbar ist.

Ist es möglich zu zeigen, dass es keine teilerfremden reduzierbaren Rechtecke gibt?

BEARBEITEN: Beachten Sie, dass, da die Werte $f(m,n)$ für gegebenes m und für coprime $n$ zwischen $m/2$ und $2m$ scheinbar sehr nahe beieinander liegen, der Wert eines coprime-reduzierbaren in diesem Bereich müsste etwa das Doppelte der anderen sein. Diese Art schließt ihre Existenz heuristisch aus.


Schau das Video: Installing ArcGIS 10 6 1 Student Edition (Oktober 2021).