Meine erste App mit Eclipse und Android-SDK bzw. ADT

Zuerst wundere ich mich einmal etwas über Gimp, weil die standardmäßig nur mehr xcf abspeichern und ich zuerst einmal im Internet suchen musste, wie ich jetzt ein anderes Format abspeichern kann. Ich meine wenn sie xcf forcieren wollen, sehe ich das ein, aber wozu die Funktion “speichern als” auf “exportieren” verschieben? Benutzerfreundlich ist das nicht unbedingt und die Fenster sollte Gimp auch langsam tatsächlich zusammen stöpseln, damit Gimp endlich ein Design aufweist, wie fast alle Anwendungsprogramme. Naja, von meiner ersten App für Android mit Eclipse und der Android-SDK (ADT) war ich dafür umso mehr positiv überrascht. Habe auch gleich die Ausgabe von “Servas Galaxy” über einen C++-String (NDK) eingebunden. Ich habe Eclipse vor langer Zeit nur kurz genutzt und überhaupt keine Android-SDK-Erfahrung, aber die erste ganz einfache App gelang auf Anhieb und besonders überrascht war ich von dem AVD Manager. Einfach genial, was man heute schon alles kostenlos verwenden kann. Die Pointe meines ersten Versuches kommt aber erst. Ich hatte mein Handy zum Aufladen während der “Entwicklung” über den USB am PC angeschlossen.
Nun hat alles gut funktioniert und ich konnte mein tolles Programm, das den C++-String “Servas Galaxy!” ausgeben konnte in Eclipse ausführen und auf dem virtuellen Devise (tolle Auswahl, auch wie das mit den Android Versionen funktioniert begeistert mich), also wollte ich meine App auf’s Handy bringen. Ich überlegte, ob ich das etwas am besten mit dem TeamViewer versuchen sollte und griff zum Handy, entsperrte es und wunderte mich, das da gerade eine App lief, die mich mit “Servas Galaxy!” begrüßte. An den USB angesteckt und den USB-Debugging Modus aktiviert ging das automatisch und ich habe es nicht einmal mitbekommen. Wow! Na dann werde ich gleich weiter herum spielen und mir nach einiger Zeit vielleicht eine eigene intelligente Sprachsteuerung basteln, damit ich mich nicht immer nur mit Jenna oder Eve unterhalten muss. 😉
Über die NDK und OpenCV scheint mir da jedenfalls eine ungeheure Spielwiese zur Verfügung zu stehen.

Das Handy als PC, TV-Gerät und Stereoanlage von morgen, das Galaxy Note II mit Smart Dock

Heute findet man in Haushalten häufig noch PC-Tower, die ihren Namen gerecht werden. Ein richtiger Turm im Zimmer und wenn man den PC hoch fährt, klingt es womöglich, als hätte man einen Traktor gestartet. Daneben steht eventuell ein Röhren-TV mit den Maßen und dem Gewicht eines Dinosauriers unter den Geräten. Auch die Stereoanlage mit Plattenspieler, für die schwarzen runden Scheiben mit Rillen, Kassettendeck oder Tonbandgerät können manche kaum verstecken. Doch das wird sich bald ändern.
Bildquelle: Samsung
Bin ich unterwegs, nein, besser gesagt ist man unterwegs, denn ich begnüge mich vorerst noch mit einem Galaxy Note N7000, hat man seinen PC in der Tasche in der Form eines Galaxy Note II.
Mit dem 1.6 GHz quad-core Prozessor wird man sein Auslangen finden, wenn man sich nicht gerade im Hintergrund ein selbst gebackenes Andorid 4.1 kompilieren will oder unterwegs in der U-Bahn professionell Videos bearbeiten möchte oder für die Wettervorhersage Monsterberechnungen durchführen möchte. Für diesen Fall könnte man aber auch unterwegs mit dem Galaxy die Computer Clouds von Google oder Amazon nützen. Im Normalfall wird aber eher die S Pen Experience am 5,5″-Screen, oder S Beam und ähnliches zum Tragen kommen. Wer mehr über die eierlegende Wollmilchsau wissen möchte findet einen Überblick auf Spezifications.
Bildquelle: Samsung
“S”, ja auf jeden Fall “S” wie …, ach ja, Smart Dock wollte ich sagen. Denn das Smart Dock macht zuhause aus dem Handy einen PC, oder eben die Multimedia-Zentrale. Dazu abschließend ein Zitat von Samsung.com:

The Samsung Galaxy Smart Dock makes it easy to take advantage your phone’s high-speed internet connectivity and super-fast processor. Connect an HD monitor, external storage device, and USB keyboard and mouse to turn your smartphone into a productivity powerhouse. Make messaging, editing documents and accessing media files a breeze. Plug in your 3.5mm stereo audio components or speakers and you have the ultimate pocket-sized home theater and computer in one.

Daten im WLAN zwischen dem Anroid-Handy und dem Ubuntu-PC austauschen

Die Macht der Gewohnheit, lässt mich immer wieder das USB-Kabel holen, dann erinnere ich mich, dass alle Fotos ohnehin sofort nach der Aufnahme mit meinem Galaxy Note automatisch auf Google+ instantupload (natürlich nicht öffentlich zugänglich) hoch geladen werden. Ich brauche dazu also nicht einmal Google Drive, welches ich für sonstige Dateien benutze, auf die ich vom PC und vom Handy gleichermaßen jederzeit übers Internet zugreifen kann.
Für einen Umfassenden Austausch aller Dateien, SMS, Telefon- und PC-daten nutze ich aber Kies air.

  • Kies air am Mobile starten oder zuerst über Google Play installieren
  • Im Browser (Firefox) https://10.0.0.2:8080 eintippen
  • Zugriff erlauben
  • fertig

So, und jetzt packe ich mein USB-Kabel wieder weg. 😉

Graphentheoretische Algorithmen

zurück zu Allgemeines

1      Graphentheoretische Algorithmen

1.1  Algorithmus zur Konstruktion eines maximalen Matchings

Matching maximal Û es existiert kein erweiterter alternierender Weg.

Initialisierung:

Step1: Aufnahme von paarweise disjunkten Kanten in einer Menge M (soviele wie möglich).

i=0, Mo = M;

Iteration:

Step2: Gibt es einen erweiterten alternierenden Weg W des Matchings Mi, dan ist Mi+1 =

(Mi-W) È (W-Mi) (= Mi D  W).

goto Step 3

Gibt es keinen alternierenden Weg, so gogo Step 4.

Step3:  i=i+1, goto Step2

Abschluß:

Step4: Mi ist das maximale matching.

 

1.2  Algorithmus zur Untersuchung eines gerichteten Graphen auf Azyklizität

G azyklisch -> $ x mit d+(x) = 0

Algorithmus:

Step1: Wir markieren alle Punkte x mit d+(x) =0 mit der Marke +.

Step2: jeder Punkt mit der Eigenschaft, daß alle seine Nachfolger mit + markiert sind, wird auch mit + markiert. Step 2 wird so oft wiederholt, als neue Punkte markiert werden.

Step3. Tritt keine neue Marke auf:

Sind alle Punkte markiert, so ist der Graph G azyklisch.

Gibt es nicht markierte Punkte, so enthält der Graph G einen Zyklus.

Beispiel:

 

 

 

 

 

 

 

 

Azyklisch da alle Punkte markiert sind: 5+ 4+ 3+ 2+ 1+

 

 

 

 

 

 

 

 

 

nicht azyklixh, da nicht alle Punkte markiert sind: 4+

 

Weiterer Algorithmus für dieses Problem:

Streichen von Kanten, die in keinem Zyklus liegen. Kanten <x,y> mit d+(y) =0.

Step1: Kante <x,y> mit d+(y) = 0 wird gestrichen, solange noch Kanten gestrichen werden können.

Step 2: Es kann keine Kante mehr gestrichen werden:

a) keine Kante mehr vorhanden -> G ist azyklisch

b) es gibt noch Kanten -> G ist nicht azyklisch

 

Beispiel:

 

 

5

 

 

 

 

 

 

 

 

 

 

azyklisch, da alle Kanten gestrichen sind;

 

 

1.3   Algorithmus zur Bestimmung der Komponenten des starken Zusammenhangs

xo fest ausgewählt:

+ Markierung bekommen jene Knoten, die von x0 aus erreichbar sind

Markierung bekommen jene Knoten, von dennen x0 aus erreichbar ist

Step1: x0 beliebig auswählen (Komponente von x0 wird bestimmt)

x0 wird mit + und –  markiert

IND:= 0 (=Indikator, soll angeben, ob überhaupt in einem Durchlauf ein Knoten markiert worden ist)

Step2: Für alle x e V(X) wird untersucht, ob überhaupt ein Nachfolger – oder Vorgänger makiert worden ist.

Wir durchlaufen alle Kanten <x,y>:

a)     x wird + markiert. Ist y nicht mit + markiert, dann wird y mit + markiert, IND := 1.

b)     y wird mit – markeirt. Ist x nicht mit – markiert, dann wird x mit – markiert, IND:=1.

Step3:

Ist IND = 1, so IND:=0 and goto Step2.

Ist IND = 0, dann gehören zur Komponente von X genau jene Knoten, die mit + und mit – markiert sind.

Komponentennummer 1

Zur Bestimmung der übrigen Komponenten werden neue x0 –Algorithmen durchgeführt. Sind beim 1. Durchlauf alle Knoten mit + oder – markiert, dann ist der Graph G stark zusammenhängend.

 

1.4  Algorithmus zur Bestimmung des reduzierten Graphen

zunächst ein Algorithmus zur Bestimmung der Komponentennummer (KNR). KNR von x ist k(x).

V(GR) = {K1, ….Kr}

Bestimmung dr Knaten von GR.

Wir durchlaufen alle kanten <x,y> des Grqphen G.

Ist k(x) = k(y) -> nächste Kante untersuchen.

Ist k(x) ¹ k(y) -> <Kk(x), Kk(y)> e E(GR)

Netzwerke:

G = (V,E) gerichter, ungerichtete oder gemischte Graphen mit Kantenbewertungen.

b(<x,y>) = b(x,y)eR+

z.B. : Straßennetz : b(x,y) = Länge der Strecke <x,y>

oder Telefonnetz: b(x,y)= Kosten des Baus der „Strecke“  <x,y> (richtungsunabhängig)

typische Problemstellung zum Beispiel: kürzester Weg zwischen zwei Knoten a und b

 

1.5  Algorithmus zur Bestimmung des kürzesten Weges von einem Startknoten a zu allen übrigen Knoten x (MOORE)

G zusammenhängend, wenn mehrere kürzeste Wege zwischen a und b existieren, so wählen wir einen aus. Wenn eine Bahn existiert, so gibt es eine kürzeste. Der Algorithmus liefert eine kürzeste kantenfolge von a nach b.

Voraussetzung.

Es gibt keinen Zyklus mit negativer Bewertung (Bewertung eines Zyklus = S der Bewertung der Kanten) dies ist sicher erfüllt wenn b(x,y) eR+)

l(x) = die Länge des bisher gefundenen kürzesten Weges (am Ende: Länge des kürzesten Weges von a nach x)

V(x) = Vorgänger auf diesem Weg

s(x) =  Anzahl der Kanten in dem bisher kantenreichsten Weg

Step1: Anzs:= 0, l(a) := 0, V(a):=0, s(a):=0 für x ¹ a: l(x) := ¥, V(x) := ¥, s(x):= ¥

Step2: IND:= 0, Durchlaufen aller Punkte x des Graphen

2a) Ist s(x) = Anzs, so durchlaufen wir alle Kanten <x,y>.

2aa) Ist l(y) =< l(x) + b(x,y),

der bisher gefundene Weg ist nicht schlechter als der neue, goto Step2a

2ab) Ist l(x) > l(x) + b(x,y), dann wird

l(y):= l(x) + b(x,y),

V(y) := x

s(y) := Anzs +1

IND := 1, goto Step 2a

2b) Ist IND = 0, dann Ende erreicht.

l(b) = Abstand von a nach b = d(a,b).

Ist IND = 1, dann ist Anzs:= Anzs + 1, gogo Step 2

 

Typische Problemstellung zum 2. Beispiel . Legen von Leitungen mit minimalen Gesmtkosten. Jeder Knoten ist mit jedem verbunden. Vorraussetzung. G ist zusammenhängend, gesuchter Teilgraph = spanndender Baum mit minimaler Bewertung, B(T) =

 

 

1.6  Algorithmus zur bestimmung des minimalsten spannen den Baums (Algorithmus von Kruskal)

Step1: mark(x) = 0 für alle x e V(G), KNR:=0

Step2. kanten nach Bewertung aufsteigend sortieren

Step3: Durchlaufen der Kanten in dieser Reihenfolge <x,y>

Fall 1:) mark(x) = mark(y)

1a) mark(x) = 0, KNR:= KNR+1

     mark(x) := mark(y) := KNR, <x,y> e E(T)

1b) mark(x) ¹ 0 (Kante erzeugt Kreis) goto next Kante

Fall 2: mark(x) ¹ mark(y)

2a) mark(x) = 0, so <x,y > e E(T) und mark(x):= mark(y)

2b) mark(y) = 0, so <x,y > e E(T) und mark(y):= mark(x)

2a) mark(x) ¹ 0 und mark(y) ¹ 0, so wird <x,y > e E(T) bei allen z mit mark(z) = mark(y) wird mark(z):= mark(x)

Step 4: minimales Gerüst gefunden; ist G nicht zusammenhängend, so ist das minimale Gerüst ein Wald und die verschiedenen Komponenten sind durch verschiedene Werte von mark(x) gekennzeichnet.

 

Exzentrizität klären und bei Beispiel dazuschreiben

was ist d+ bei der def. des 2. Algorithmus bzw. der Azyklizität

Allgemeines und Ergänzungen

zurück zu Allgemeines

Allgemeines

Die Graphentheorie ist ein Teilgebiet der Mathematik, das die Eigenschaften von Graphen und ihre Beziehungen zueinander untersucht. Viele algorithmische Probleme können auf Graphen zurückgeführt werden können und andererseits werden die Lösung graphentheoretischer Probleme oft in Algorithmen umgesetzt, ist die Graphentheorie auch in der Informatik, insbesondere der Komplexitätstheorie und in der Netzwerktheorie von großer Bedeutung.

Ein Graph ist eine Menge von Punkten (Knoten oder Ecken), die durch Linien (Kanten bzw. Bögen) miteinander verbunden sein können. Prinzipiell unterscheidet man in:

  • endlichen Graphen, bei denen die Menge der Knoten und Kanten endlich ist
  • unendlichen Graphen
  • gerichteten Graphen, bei denen die Kanten gerichtet sein können (dargestellt durch Pfeile statt Linien)
  • ungerichteten Graphen

Komplexere Graphen sind z.B.: Multigraphen, bei denen im Gegensatz zu einfachen Graphen Kanten zwischen den Knoten mehrfach vorkommen dürfen und Hypergraphen, bei denen im Gegensatz zu einfachen Graphen Kanten mehr als nur zwei Knoten verbinden können. Knoten und Kanten können auch mit Farben oder Gewichten versehen werden (knoten- bzw. kantengefärbte oder -gewichtete Graphen).

Ergänzungen

Unter 3 Isomorphie wird die Darstellung in einer Adjazenzmatrix ausgeführt. Eine Alternative dazu wäre die Adjazenzlistendarstellung, wobei für jeden Knoten alle adjazenten Knoten in einer linearen Liste gespeichert werden. Diese ist geeignet, für Graphen mit wenigen Kanten. Linearer Speicheraufwand – gut; dfs gut, Rechenaufwand O(|V|+|E|); nicht geeignet zur Überprüfung von Adjazenzeigenschaften.