Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: Mathematik und Physik ::  Wie kann man die optimalen Kachelgrößen berechnen?  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Gruum
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.08.2000
Beiträge: 619
Beitrag Gruum Mitglied 20:08:01 24.02.2012   Titel:   Wie kann man die optimalen Kachelgrößen berechnen?            Zitieren

Gegeben ist ein Rechteck. Nun will ich das Rechteck mit kleineren Rechtecken, deren Flächeninhalte in einem bestimmten Bereich liegen, ausfüllen. Jedes Rechteck muss die gleiche Breite wie sein oberer Nachbar und die gleiche Höhe wie sein linker Nachbar haben. Die Summe der Längen aller Kanten soll möglichst klein sein. Alle vorkommenden Zahlen (Flächeninhalte und Seitenlängen) müssen natürliche Zahlen sein.
Wie mach ich das am besten?


Zuletzt bearbeitet von Gruum am 20:08:41 24.02.2012, insgesamt 1-mal bearbeitet
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17930
Beitrag SeppJ Moderator 20:42:48 24.02.2012   Titel:   Re: Wie kann man die optimalen Kachelgrößen berechnen?            Zitieren

Gruum schrieb:
Die Summe der Längen aller Kanten soll möglichst klein sein.
Auch wenn ich es jetzt nicht beweisen will, so würde ich doch mal intuitiv ganz stark vermuten, dass dies bedeutet, dass die Zahl der Kacheln möglichst klein sein muss. Daher wäre die optimale Breite der größte Teiler der Breite des großen Rechtecks und die optimale Höhe der größte Teiler von dessen Höhe.

Das ist natürlich jeweils die Breite bzw. die Höhe selbst. Ich nehme im folgenden mal an, dass du diese ausschließen möchtest.

Finden kannst du diese Zahl, indem du den kleinsten Primfaktor der Breite/Höhe suchst. Die gesuchte Breite/Höhe ist dann die Breite/Höhe geteilt durch diesen Primfaktor.
Beispiele:
Großes Rechteck 16x9 :arrow: optimale Kachelgröße 8x3
Großes Rechteck 21x17 :arrow: optimale Kachelgröße 7x1
knivil
Mitglied

Benutzerprofil
Anmeldungsdatum: 11.02.2009
Beiträge: 5851
Beitrag knivil Mitglied 20:48:26 24.02.2012   Titel:              Zitieren

Bug: "die gleiche Höhe wie sein linker Nachbar ". Kacheln an der linken Seite haben keinen linken Nachbarn. D.h. duerfen beliebig sein, sofern das Constraint "Flaecheinhalt nicht verletzt wird. Gleiches gilt fuer obere Kacheln. Daraus folgt eine quadratische Kachelung mit Anpassung an den Raendern wird am besten sein. :)

_________________
If it were not for laughter, there would be no Tao.
Sie können einen Beitrag nicht so schnell nach Ihrem letzten absenden, bitte warten Sie einen Augenblick.
Gruum
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.08.2000
Beiträge: 619
Beitrag Gruum Mitglied 00:57:15 25.02.2012   Titel:              Zitieren

knivil schrieb:
Bug: "die gleiche Höhe wie sein linker Nachbar ". Kacheln an der linken Seite haben keinen linken Nachbarn. D.h. duerfen beliebig sein, sofern das Constraint "Flaecheinhalt nicht verletzt wird. Gleiches gilt fuer obere Kacheln. Daraus folgt eine quadratische Kachelung mit Anpassung an den Raendern wird am besten sein. :)

Das Problem ist, dass es so wenig Quadratzahlen gibt. Aber egal es müssen ja nicht alle Zeilen gleich hoch und nicht alle Spalten gleich breit sein, also kann man jede x_i-te Spalte/Zeile um eins kleiner oder größer machen.
Naja,ich weiss jetzt wie ich es mache. Auch wenn der Flächeninhalt nicht immer genau eingehalten wird, das ist sowieso nicht in jedem Fall möglich und darum ging es mit auch nicht wirklich.
Jester
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2001
Beiträge: 8520
Beitrag Jester Moderator 12:15:28 25.02.2012   Titel:   Re: Wie kann man die optimalen Kachelgrößen berechnen?            Zitieren

Gruum schrieb:
Gegeben ist ein Rechteck. Nun will ich das Rechteck mit kleineren Rechtecken, deren Flächeninhalte in einem bestimmten Bereich liegen, ausfüllen. Jedes Rechteck muss die gleiche Breite wie sein oberer Nachbar und die gleiche Höhe wie sein linker Nachbar haben. Die Summe der Längen aller Kanten soll möglichst klein sein. Alle vorkommenden Zahlen (Flächeninhalte und Seitenlängen) müssen natürliche Zahlen sein.
Wie mach ich das am besten?


Das heißt doch, dass die ränder der kacheln ein gitter induzieren, das dir dein rechteck zerschneidet. Außer an den rändern (aber wir können links mit rechts und oben mit unten zusammenpacken) ist jede kante dieses gitters rand von zwei kacheln. So eine ganze gitter-zeile/spalte hängt natürlich nur vom großen rechteck ab. Um die zahlen zu minimieren mußt du also so wenig zeilen und spalten wie möglich haben (das impliziert SeppJs Vermutung, dass man wenig kacheln will).

_________________
Mod im Mathe-Forum

Die dümmsten Programmierer schreiben die dicksten Programme.
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5712
Beitrag Michael E. Mitglied 12:28:14 25.02.2012   Titel:              Zitieren

Jester: Sehr schöner Gedankengang :live:

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
Jester
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2001
Beiträge: 8520
Beitrag Jester Moderator 13:22:09 25.02.2012   Titel:              Zitieren

Damit lässt sich die frage denke ich, sekbst wenn nur bestimmte werte für breiten und höhen zugelassen sind mit einem dynamischen programm lösen. Wenn nicht alle Kombinationen von höhen und breiten für kacheln zugelassen sind (z.b. 3*5 ist zu groß, es geht aber 3*4 und 2*6, weil zum beispiel die fläche kleiner ist) wirds etwas kniffliger sollte aber immer noch gehen. Man kann zeitgleich auchnnoch die tatsächlich abgedeckte fläche minimieren, um den überschuß kleinzuhalten. Das ist zwar alles nur pseudo-polynomiell (polynomiell in der grösse der großen box) sollte aber vermutlich reichen.

_________________
Mod im Mathe-Forum

Die dümmsten Programmierer schreiben die dicksten Programme.
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17930
Beitrag SeppJ Moderator 13:41:42 25.02.2012   Titel:              Zitieren

Kann Gruum mal das Problem genau beschreiben? Wenn keine vollständige Abdeckung gesucht ist, dann teilt man eben die Fläche in 4 Kacheln (oder 2, falls zugelassen ist, dass die Kacheln auch gleiche Breite exklusiv oder Höhe haben können wie das große Rechteck und rundet ab. Dann bleibt eben eine kleiner Rand unabgedeckt, falls die Breite/Höhe nicht durch Zwei teilbar war. Wenn man die Kantenzahl möglichst klein halten will und Überdeckung egal ist, fügt man ein 1x1 Rechteck ein und hat dann eben ganz viel Restfläche.

Wie sind diese verschiedenen Faktoren zu bewerten? Was ist das genaue Ziel?
Jester
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2001
Beiträge: 8520
Beitrag Jester Moderator 14:11:09 25.02.2012   Titel:              Zitieren

Ich denke es ist eher gemeint, dass notfalls ein überstand vorhanden sein darf, man aber das rechteck schon komplett erwischen muß und weiters die maximalen längen beschränkt sind.

_________________
Mod im Mathe-Forum

Die dümmsten Programmierer schreiben die dicksten Programme.
Gruum
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.08.2000
Beiträge: 619
Beitrag Gruum Mitglied 02:38:20 26.02.2012   Titel:              Zitieren

Also das sind jetzt mal meine Gedanken dazu:
Es gibt Zeilen und Spalten. Es müssen nicht alle Zeilen gleich hoch sein und nicht alle Spalten gleich breit, aber es gibt einen vorgegebenen Flächeninhalt den jedes, durch die Zeilen und Spalten entstandene, Rechteck mit einer gewissen Toleranz haben muss.
Die Summe der Längen aller Kanten ist dann am kleinsten wenn die Anzahl der Zeilen plus die Anzahl der Spalten am kleinsten ist. Das ist dann der Fall, wenn die Rechtecke möglichst quadratisch sind.
Die Lösung wird wohl so aussehen, dass man
n Spalten mit der Breite b,
m Spalten mit der Breite b+1,
o Zeilen mit der Höhe h und
p Zeilen mit der Höhe h+1 nimmt.
b*h und (b+1)*(h+1) müssen beide die Bedingung für den Flächeninhalt erfüllen (falls n,m,o und p nicht 0 sind).
Für eine bestimmte Anzahl von Zeilen und Spalten kann man jetzt einfach n,m,o,p,b und h berechnen und dann gucken ob die Bedingung für den Flächeninhalt erfüllt ist. Man könnte jetzt die Anzahl der Zeilen und Spalten systematisch durchgehen und gucken welche Werte das beste Ergebnis liefern. Oder man könnte einfach raten und z.B. die Anzahl der Zeilen und Spalten ausgehend von einem Quadrat mit dem vorgegebenen Flächeninhalt berechnen.
c++.de :: Mathematik und Physik ::  Wie kann man die optimalen Kachelgrößen berechnen?  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.