Zum Inhalt springen

Bubble

Mitglieder
  • Gesamte Inhalte

    1565
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Bubble

  1. Vor lauter Bewegungsdrang darf man die Ernährung nicht vergessen. Ansonsten sind Ausdauersportarten IMO die richtige Wahl. Je nachdem wie schlimm es mit dem Knie ist, käme vielleicht noch Inline-Skating in Frage, natürlich erst dann, wenn die verordnete Ruheperiode vorüber ist und der Arzt dem zustimmt.
  2. Mit Windows XP geht es. Einfach anstelle (oder zusätzlich zu) einem Laufwerksbuchstaben verwenden. Was dabei aber nicht geht, ist das der verfügbare Festplattenplatz zusammengefasst oder gemeinsam verwaltet wird. Ist der Platz der Festplatte, die als Verzeichnis eingeblendet wurde, erschöpft, dann könen in dem Verzeichnis keine weiteren Daten abgelegt werden.
  3. Oder man überträgt kaufmännische Probleme auf andere, analoge ;-) Genau, deswegen brachte ich das Beispiel. ??? Ich verstehe nicht ganz, was Du sagen willst. Die Übertragung auf kaufmännische Probleme führt jedenfalls zu keinem besseren Lösungsansatz, allenfalls auf eine analoge Problemstellung, die z.B. Dir vertrauter erscheint. Das theoretische Problem besteht darin, die optimale Lösung zu finden. Dies ist oft mit sehr hohem Aufwand verbunden und daher in der Praxis oft unrealistisch. Darum versucht man eine nährungsweise Lösung zu finden, eventuell ein lokales Optimum. Dies kann man bei dem Problem, über das wir hier sprachen, z.B. mit dem von mir oben beschriebenen und recht einfachen Verfahren tun. Das Verfahren hat jedoch prinzipbedingte Probleme und findet eben nicht grundsätzlich die bestmögliche Lösung, es kann hingegen sogar eine nur sehr schlechte Lösung vorschlagen. Es ist aber einfach umzusetzen und vergleichsweise schnell in der Ausführung (das Sortieren verursacht den größten Aufwand). So extrem muss das gar nicht sein, man kann recht einfach ein Beispiel konstruieren, wo die einfache Herangehensweise nicht zur optimalen Lösung führt (ich mache gleich ein solches Beispiel). Trotzdem: Das Verfahren wird dadurch nicht automatisch unbrauchbar, man muss sich aber über die Grenzen im Klaren sein. Nun zu einem Beispiel, wo es nicht klappt: 3 Aufträge (a, b, c), die verfügbare Zeitspanne besteht aus 40 Zeiteinheiten: a) Gewinn: 30 / Zeitdauer: 24 / Verhältnis: 1.25 Gewinn: 20 / Zeitdauer: 20 / Verhältnis: 1 c) Gewinn: 20 / Zeitdauer: 20 / Verhältnis: 1 Mögliche Lösungen: Entwerder nur a) ausführen und 30 erhalten, oder und c) ausführen und 40 erhalten. Das gierige Verfahren würde zuerst a) ausführen, da es so zuerst am meisten pro Zeiteinheit erreicht, danach aber feststellen müssen, dass weder für noch für c) genügend Zeit bleibt und aufhören. Es wäre besser gewesen a) nicht auszuführen, sondern sich auf und c) zu beschränken. Sähe die Ausgangslage anders aus, z.B. mit sehr vielen Aufträgen, die gemessen an der verfügbaren Zeit kurz sind (also beispielsweise 100 Aufträge mit jeweils 1-4 Zeiteinheiten Dauer und einem recht ausgeglichen Verhältnis aus Zeitbedarf und Gewinn), würde zwar am Ende vermutlich auch eine eher ungünstige Wahl getroffen werden, aber im Bezug auf den Gesamtgewinn würde es nicht mehr so stark ins Gewicht fallen. Würde die Aufgabe a) aus dem Beispiel einen Gewinn von mehr als 40 abwerfen, dann wäre die Lösung des gierigen Verfahrens hingegen richtig, sogar optimal. Es hängt also stark von den Eingabedaten ab wie gut die Lösung ist. Leider, und dies kann ein Problem sein, ist es nicht möglich festzustellen, wie gut oder schlecht die gefundene Lösung tatsächlich ist. Wenn die Eingabedaten aber gewisse Anforderungen immer einhalten, man keine optimale Lösung benötigt und man sich der Nachteile dieser Lösungsstrategie bewusst ist, dann kann das Verfahren auch eingesetzt werden. Natürlich kann man das Verfahren noch beliebig verfeinern, meinetwegen die ersten 90% der Zeit "greedy" verbringen und danach mehrere Varianten ausprobieren. Man kann auch gleich völlig andere Herangehensweisen anwenden. Ob sich der Aufwand lohnt und wie man in der Praxis dann tatsächlich vorgeht, muss man abwägen. Ich hoffe, die Erklärungen sind nachvollziehbar und haben Dir erstmal geholfen.
  4. Die "greedy" Variante kann bei geeigneten Ausgangssituationen durchaus gute Ergebnisse erzielen. Ihr Problem liegt aber darin, dass eine nicht nutzbare Restzeit übrig bleiben kann, in der keine weitere Aufgaben (oder nur wenig lohnende) abgearbeitet werden können. Es könnte nämlich durchaus sein, dass es weniger gut ist eine Aufgabe mit hohem Gewinn/Zeit Quotienten abzuarbeiten, bei der Zeit ungenutzt bleibt bzw. nur mit deutlich weniger lohnenden Aufgaben gefüllt werden kann, als z.B. zwei (oder mehrere) Aufgaben mit schlechterem Quotenten, die die verfügbare Zeit jedoch so viel besser ausnutzen, dass sich das Gesamtergebnis verbessert. Es ist kein rein kaufmännisches Problem. Ähnliche Fragestellungen treten z.B. auch dann auf, wenn es darum geht aus Papierrollen, mit möglichst wenig Verschnitt, bestimmte kleinere Papierformate zu gewinnen.
  5. Eigentlich wollte ich ja nichts mehr hierzu schreiben... Wenn Dauer und Gewinn für jede Aktivität vorab bekannt sind und die Aktivitäten nicht voneinander abhängig sind (so verstehe ich die Fragestellung zumindest), dann kann kann man sie in ein Verhältnis setzen und Gewinn/Zeit für jede Aktivität ausrechnen. Dann sortiert man danach (und nach der Dauer als zweites Kriterium) und beginnt mit mit dem Abarbeiten. Ist eine Aktivität für die verbleibende Zeit zu lang, dann geht man die Liste weiter durch, bis eine möglichst gewinnbringende Aktivität gefunden ist, die noch in die Zeitlücke passt. Dies wäre die einfache "greedy" Variante. Wenn die Dauer aller Aktivitäten im Verhältnis zur gesamten verfügbaren Zeit kurz ist und die Unterschiede im Gewinn/Aktivität für die Aktivitäten keine hohen Sprünge machen, dann führt dies zu einem vermutlich erst einmal brauchbaren Ergebnis. Wenn dies nicht gegeben ist, oder man höhere Ansprüche an das Ergebnis stellt, muss man zu einem aufwendigeren Verfahren greifen. Hier kann man aber schnell viel Zeit investieren, sowohl beim Umsetzen, als auch später in der für die Ausführung erforderlichen Rechenzeit.
  6. Das sind 2D-Textturkoordinaten, also wie die Textur auf das Objekt abbgebildet wird. Stichwort wäre "UV mapping". Schau einfach mal in Bücher über Computergrafik, in vielen müsste es erklärt werden.
  7. Bubble

    DLL´s registrieren

    Normale DLLs muss man nichtregistrieren. Nur wenn in ihnen COM-Objekte enthalten sind, tut man dies. Wenn die DLLs die genannte Funktion nicht enthalten, dann sind es entweder normale DLLs ohne COM Objekte oder sie können sich nicht selbst registrieren.
  8. Es hängt von seinen Aktivitäten ab, je nach Situation kann er durchaus erstmal gierig vorgehen und akzeptable Resultate erzielen. Ob das bei ihm sinnvoll ist, ist spekulativ, wir wissen nicht, was er als typische Eingabedaten erwartet. Möglich ist es jedoch. Das globale Maximum findet er eh nur durch eine vollständige Suche.
  9. Du kannst Windows Form User Controls in MFC Dialogen und als MFC Dialoge verwenden, wenn die Anwendung die MFC DLLs dynamisch linkt. Vielleicht ist das ein gegeigneter Weg für Dich. Using a Windows Form User Control in MFC
  10. Zu dem Tonfall: Kommentare in einem derart aggressiv-dümmlichen Tonfall bitte zukünftig erst gar nicht abschicken. Danke. Zum Problem: Es ist eine einfache Lösung, rasch umzusetzen, zwar selten eine wirklich gute, kann je nach Situation aber auch akzeptabel sein. Über die Art der zu erwartenden Daten ist uns bisher übrigens nichts bekannt.
  11. Spontan könntest Du z.B. probieren: 1. "greedy". 2. Zufällige Kombinationen auswählen, die besten Ausgangskombinationen versuchen lokal weiter zu optimieren. 3. Genetischer Algorithmus. Das Optimum wirst Du nur duch eine vollständige Suche sicher finden können. her finden können.
  12. Darauf, dass dies geht, würde ich mich nicht verlassen. Ich meine, es geht nicht überall einfach so per Option.
  13. Dem kann man zustimmen. Weiteres ist plattformspezifisch. Für Visual C++ kann man die Größen hier nachlesen: Data Type Ranges Hier ist das Verhalten der 32 und 64 Bit C++ Compiler gleich.
  14. Es gibt 64-Bit-Compiler (C/C++), bei denen ein "int" oder auch ein "long" aus Kompatibilitätsgründen in der Standardeinstellung weiterhin 32-Bit lang sind.
  15. Dann hast Du noch einen Fehler drin.
  16. "malloc" holt sofort einen zusammenhängenden Speicherblock oder schlägt fehl. Mit "free" gibst Du den Speicherblock wieder frei. Da Du sagst, bisher wenig mit C zu tun gehabt zu haben, ein wenig Beispielcode (kein lauffähiges Programm): #include <stdlib.h> #include <malloc.h> /* ... */ double *feld; int spalten; int zeilen; /* ... */ spalten = 20; zeilen = 1000; /* ... */ feld = (double *) malloc(zeilen * spalten * sizeof(double)); if(feld != NULL) { /* Beispiel fuer Zuweisung in Zeile z = 8 und Spalte s = 9 bei zeilenweise Organisation des Feldinhaltes (falls spaltenweise Organisation günstiger ist, analog vorgehen, also die Spalteninhalte hintereinander im Speicher ablegen): */ feld[z * spalten + s] = 123; /* Wenn das Feld nicht mehr benötigt wird, den Speicher freigeben: */ free(feld); } else { /* Fehler: Speicher nicht erfolgreich erhalten */ } Tippfehler können vorhanden sein, ich hab's nicht extra getestet. "/* ... */" soll lediglich mögliche Einschübe von weiterem Code andeuten.
  17. Lass Dir Speicher zur Laufzeit zuweisen (malloc, free).
  18. Ich nehme an, er will einen Flash basierenden Video-Player in eine Webseite einbinden, der einen Film abspielt. Er will dabei aber nicht auf externe Angebote zurückgreifen, sondern alles selbst (auf seinem PC) hosten.
  19. Diese Art ein "2D"-Array zu bauen (also ein Array aus Pointern zu verwenden, die auf weitere Speicherbereiche zeigen, die die eigentlichen Daten enthalten) ist keine empfehlenswerte Methode, 2D-Bilddaten abzulegen und auf diese zuzugreifen. Eine solche Vorgehensweise wäre bei jagged arrays empfehlenswert, um keinen Speicher zu verschwenden, aber nicht für bitmaps, bei denen jede Zeile gleich viele Einträge besitzt.
  20. Wenn Du keine Software einsetzen willst, die explizit ein 64-Bit OS benötigt (z.B. da sie sehr viel Speicher benötigt), dann würde ich derzeit noch zum 32-Bit OS greifen (und damit leben, dass man, je nach Konfiguration, evtl. nur ungefähr 3GB RAM sinnvoll nutzen kann).
  21. Für einfache Bildformate (z.B. BMP mit festgelegter Bittiefe) kann man sich eine Ladefunktion leicht selbst schreiben. Für verbreitete Formate wie JPEG, PNG, usw. gibt es fertige Bibliotheken (library). Ich kann mir kaum vorstellen, dass eine Suche danach erfolglos ist.
  22. Stimmt nicht. Mit Visual C++ kannst Du sowohl in C geschriebene Libraries verwenden (auch wenn Du den Rest in C++ programmierst), als auch in C programmieren, wenn es unbedingt sein muss. Es kommt immer darauf an, was Du tun willst (und wie Du es tun willst). Für ein komplettes Bild eine FT durchzuführen, kostet einiges an Rechenzeit. Wenn es nur darum geht einen Lowpass-Filter anzuwenden, dann braucht man keine FT.
  23. Diese Version ist inzwischen wirklich alt und Du solltest einen aktuellen Compiler verwenden. Die aktuelle Express Edition kannst Du Dir auch kostenlos runterladen. MFC würde ich für Deine Anwendung nicht verwenden. Du könntest Dir aber überlegen, Deine Bildverarbeitungsrotinen als Plugin für eine Grafiksoftware umzusetzen, wodurch sie sich unter Umständen einfacher testen lassen. Warum willst Du dies im Frequenzraum tun?
  24. Leider hast Du nicht das OS und den Compiler genannt, mit dem arbeitest. Für JPEG oder PNG gibt es z.B. Bibliotheken. Damit dürften für Dich die gänigsten Formate auch schon abgedeckt sein, vermutlich wirst Du Dich eh für eines entscheiden.
  25. Für gängige Bildformate gibt es fertige Funktionen oder Bibliotheken zum Lesen und Schreiben von Bildern in dem jeweiligen Format. Für einfache Bildformate kann man einen Reader aber auch ohne gewaltigen Aufwand selbst schreiben, wenn man eine genaue Beschreibung des Formats hat. In ein 2D-Array, auf dessen Elemente Du mit zwei Paaren eckiger Klammern zugreifen kannst, wirst Du die Pixel nur bekommen, wenn Du Dich vorab auf eine Bildgröße festlegst.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...