Algorithmen für Ingenieure

Ähnliche Dokumente
Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Sequentielle Textdateien HARALD NAHRSTEDT. Erstellt am

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Namen in VBA nutzen HARALD NAHRSTEDT. Erstellt am

Klausur WS 2014/15 EDV Anwendungen im Bauwesen. Name: Vorname: Matr.-Nr:

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Objektbindungen und Verweise HARALD NAHRSTEDT. Erstellt am

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Balloons in VBA nutzen HARALD NAHRSTEDT. Erstellt am

Teil VII. Hashverfahren

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA CustomViews in VBA nutzen HARALD NAHRSTEDT. Erstellt am

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

Universität Duisburg - Essen

Excel VBA. Teil Zusammenfassung! Was wir können sollten! V

Klausur SS 2014 EDV Anwendungen im Bauwesen. Name: Vorname: Matr.-Nr:

Klausur WS 2013/14 EDV 2 Anwendungen im Bauwesen. Name: Vorname: Matr.-Nr:

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Hashtabellen. Hashverfahren, was ist das eigentlich?

Universität Duisburg - Essen

Microsoft Excel VBA - Einführung

Universität Duisburg - Essen

INFORMATIK TEIL: VBA. Infromatik WS 17/18 Teil: VBA. Allgemeines: - 4 Übungen á 3 Stunden

Universität Duisburg - Essen

Modul 122 VBA Scribt.docx

Fibonacci-Suche. Informatik I. Fibonacci-Suche. Fibonacci-Suche. Einführung. Rainer Schrader. 24. Mai 2005

Hashverfahren I. Algorithmen und Datenstrukturen 251 DATABASE SYSTEMS GROUP

4 Schleifen -= Entstanden unter Excel 2003 =-

Klausur SS 2013 EDV Anwendungen im Bauwesen. Name: Vorname: Matr.-Nr:

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Filter in VBA nutzen HARALD NAHRSTEDT. Erstellt am

10 Berechnungen aus der Elektrotechnik

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Programmieren mit Excel VBA Teil 2 Formulare als Benutzerschnittstellen

Algorithmen und Datenstrukturen

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA OLE-Objekte HARALD NAHRSTEDT. Erstellt am

Praktische Informatik I Algorithmen und Datenstrukturen Wintersemester 2006/07

Einführung in die Programmierung mit VBA

Hinweis. PKAntonitsch, 20. April 2002 (für kritische Rückmeldungen:

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Daten mit VBA konsolidieren HARALD NAHRSTEDT. Erstellt am

E-PRIME TUTORIUM Die Programmiersprache BASIC

Universität Duisburg - Essen

Grundlagen der Programmierung

Verteilung des Korrelationskoeffizienten r. für zwei unabhängige normalverteilte Merkmale. Studie

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Kommentare mit VBA verwalten HARALD NAHRSTEDT. Erstellt am

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Typisierte Random Dateien HARALD NAHRSTEDT. Erstellt am

Universität Duisburg - Essen

2 Berechnungen aus der Statik

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Einfache Dialoge in VBA HARALD NAHRSTEDT. Erstellt am Bearbeitet am

Datenstrukturen und Algorithmen. Vorlesung 10

Themen. Hashverfahren. Stefan Szalowski Programmierung II Hashverfahren

17. Hashing. Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren

Klausur Informatik B April Teil I: Informatik 3

Algorithmen und Datenstrukturen

Excel Funktionen durch eigene Funktionen erweitern.

Zeichenketten Benedikt Straßner. Programming Systems Group Martensstr Erlangen Germany

8. Hashing Lernziele. 8. Hashing

Universität Duisburg - Essen

ADS: Algorithmen und Datenstrukturen

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017

VBA-Programmierung: Zusammenfassung

OLConnector Programmierung

Algorithmen und ihre Programmierung

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Teil 1: Suchen. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Suchen 1-1

EADS 3.3 Gewichtsbalancierte Bäume 95/598 ľernst W. Mayr

17 VBA-Praxisbeispiel

Algorithmen und ihre Programmierung -Teil 2-

Excel + VBA. Ergänzungen. Kapitel Einführung in VBA. Einfache Dialoge in VBA HARALD NAHRSTEDT. Erstellt am Bearbeitet am

WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN?

Kommentierte Lösung zur Aufgabe Kiosk

Informatik II, SS 2014

Informatik II, SS 2018

Tutorium für Fortgeschrittene

Name: Aufgaben. Arbeitsanweisung

Sub Rechnungsnummer() Range("A1") = Range("A1") + 1 End Sub

Informatik II, SS 2016

Universität Duisburg - Essen

Access 2010 Programmierung Import und Export nach Excel

Tapischnittstelle zum Telefon x Anbindung an den PC Zugangsdaten im CRM. Terminkalender Outlook Schnittstelle einrichten gleiche Warenwirtschaft ERP

MAXIMUM2.STR Struktogramme. Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben.

Gedanken zur Unterrichtsrelevanz von Software-Werkzeugen am Beispiel von Excel (VBA)

Übersichtliche Darstellung von Vertriebsleistungen

11. Berechnungen aus der Regelungstechnik

Implementierung von Mengen (und Wörterbücher): Alternative zu Suchbäumen

Access Programmierung. Ricardo Hernández García. 1. Ausgabe, November 2013 ACC2013P

Algorithmen und ihre Programmierung

Schlüsselfelder für Grundbuchdaten. Spezifikation für GB-Softwarehersteller

6 Technische Statistik und Wahrscheinlichkeitsrechnung

13 Unterprogramme erstellen

Algorithmen und Datenstrukturen

Kapitel 6 HASHING. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.

Informatik II, SS 2014

ACCESS. Formulare per VBA referenzieren FORMULARE MIT VBA PROGRAMMIEREN FORMULARE PER VBA REFERENZIEREN BASICS

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Algorithmen und Datenstrukturen II: Hashverfahren

Satz 23 In einer Hashtabelle der Größe n mit m Objekten tritt mit Wahrscheinlichkeit

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Transkript:

0 HARALD NAHRSTEDT Algorithmen für Ingenieure realisiert mit VBA Kapitel 8 Algorithmen und Datenstrukturen Erstellt am 01.08.2010 8.6 Hashsuche in Listen Beschreibung Die Hashsuche ist ein effektives Verfahren zum Durchsuchen von umfangreichen, nicht geordneten Liste. Die Methode entstand 1953-56 bei IBM. Sie ist auch unter dem Namen Gestreute Speicherung bekannt.

8.6 Hashsuche in Listen 1 Die Grundidee ist, dass Elemente einer Liste oder Datei durch ganzzahlige Schlüssel gekennzeichnet und mithilfe einer Funktion (Hashfunktion) einer Adresse (Hashindizes) zugeordnet werden. Satznummer Ordnungsbegriff Datensatz Satznummer = Hashfunktion(Ordnungsbegriff) Bild 1 Das Hash-Prinzip Ordnet die Hashfunktion zwei verschiedenen Schlüsselwerten die gleiche Adresse zu, so spricht man von Kollision. Da der Ordnungsbegriff nur eine Teilmenge des Datensatzes darstellt, sind Kollisionen zwangsläufig. Möglichst wenige Kollisionen erhält man, wenn als Hashfunktion die Divisionsreste bei Teilung durch eine Primzahl p gewählt werden, da die Reste mod(p) stark streuen. Methoden für Hashfunktionen: Divisionsrest-Verfahren Zerlegungsmethoden Basistransformationen Nichtnumerische Schlüssel Arboreszensen (verallgemeinertes Divisionsrestverfahren) Methoden bei Kollisionen: Lineare Kollisionsstrategie Kollisionsstrategie mittels Pseudozufallszahlen Quadratische Kollisionsstrategie Doppelhashverfahren Suchen in einer technischen Liste Wir suchen uns eine Liste, wie zum Beispiel die Liste Technische Regel für Dampfkessel (TRD). Zu finden in Wkipedia und ergänzen sie um einen Suchbegriff. Die Liste hat damit den Aufbau nach Bild 2. Als Hashfunktion wird zunächst jedes Zeichen des Suchbegriffs (in seiner ganzen Länge) in seinen ASCII-Wert umgewandelt. Aus der Quersumme wird dann mittels Adresse = (Summe mod 41) +1 (1) die Speicheradresse ermittelt.

2 8 Algorithmen und Datenstrukturen In einem ersten Schritt wollen wir einmal testen, wie viele Kollisionen die Formel erzielt. Dazu schreiben wir eine Prozedur, die in der Spalte D die Anzahl der Speicherzugriffe summiert. In einem Modul wird dazu die Prozedur nach Code 1 installiert. Bild 2 Testbeispiel einer technischen Liste Code 1 HashTest 'Modul: M1_Hash Option Explicit Sub HashTest() Dim otab As Object Dim imaxrow As Integer Dim i As Integer, j As Integer Dim skey As String Dim ikey As Integer Dim lsum As Long Set otab = ActiveSheet imaxrow = otab.usedrange.rows.count For i = 1 To imaxrow skey = otab.cells(i, 3) lsum = 0 For j = 1 To Len(sKey) lsum = lsum + Asc(Mid(sKey, j, 1)) Next j ikey = lsum Mod 41 + 1 'Hashfunktion otab.cells(ikey, 4) = otab.cells(ikey, 4) + 1 'Testeinträge Next i End Sub Diese Prozedur ermittelt für das Testbeispiel maximal 3 Kollisionen und eine relativ gut gestreute Verteilung.

8.6 Hashsuche in Listen 3 Nun können wir damit beginnen, die Liste in Tabelle1 in eine nach dem Hashschlüssel geordnete umzustellen. Dazu benutzen wir die Tabelle2 und den nachfolgenden Code 2. Das Ergebnis zeigt Bild 3. Code 2 Hash Datentransfer 'Modul: M1_Hash Sub Hashtransfer() Dim otab1 As Object Dim otab2 As Object Dim imaxrow As Integer Dim i As Integer, j As Integer Dim skey As String Dim ikey As Integer Dim lsum As Long Set otab1 = Sheets("Tabelle1") Set otab2 = Sheets("Tabelle2") imaxrow = otab1.usedrange.rows.count For i = 1 To imaxrow skey = otab1.cells(i, 3) lsum = 0 For j = 1 To Len(sKey) lsum = lsum + Asc(Mid(sKey, j, 1)) Next j ikey = lsum Mod 41 + 1 'Hashfunktion If otab2.cells(ikey, 1) = "" Then otab2.cells(ikey, 1) = otab1.cells(i, 1) otab2.cells(ikey, 2) = otab1.cells(i, 2) otab2.cells(ikey, 3) = otab1.cells(i, 3) Else 'Kollision j = 42 Do While Not otab2.cells(j, 1) = "" j = j + 1 Loop otab2.cells(j, 1) = otab1.cells(i, 1) otab2.cells(j, 2) = otab1.cells(i, 2) otab2.cells(j, 3) = otab1.cells(i, 3) End If Next i End Sub Mit der dritten Prozedur HashSuche wird nun das Suchen mit der Hash-Methode getestet. Code 3 Hash Suche 'Modul: M1_Hash Sub HashSuche() Dim otab As Object Dim skey As String

4 8 Algorithmen und Datenstrukturen Dim ikey As Integer Dim lsum As Long Dim j As Integer Set otab = Sheets("Tabelle2") skey = InputBox("Schlüssel = ", "HASH-SUCHE") lsum = 0 For j = 1 To Len(sKey) lsum = lsum + Asc(Mid(sKey, j, 1)) Next j ikey = lsum Mod 41 + 1 'Hashfunktion If otab.cells(ikey, 3) = skey Then MsgBox Str(iKey) & " / " & otab.cells(ikey, 2), vbinformation, "GEFUNDEN" Else j = 42 Do While Not otab.cells(j, 1) = "" If Trim(oTab.Cells(j, 3)) = skey Then MsgBox Str(j) & " / " & otab.cells(j, 2), vbinformation, "GEFUNDEN" End If j = j + 1 Loop End If End Sub Bild 3 Die Hash-Liste

8.6 Hashsuche in Listen 5 Natürlich macht eine solche Anwendung erst bei einer großen Datenmenge Sinn.