California State University Dominguez Hills - Department of Computer Science

  Home  |  Syllabus  |  Course Outline  |  Homework  |  Lecture Notes  |  Tests  |  Programs  |  Contact  | 

  ATD-001       Programowanie w Abstrakcyjnych Typach Danych           Wiosna 2011

 

 

THE URL OF THIS PAGE IS http://csc.csudh.edu/suchenek/wwsi/notes.htm


All rights reserved.

The contents of this website, the links contained therein directly and indirectly, and the contents of the said links, are provided for non-profit educational use by the student currently enrolled in this course and for the duration of this term. No other use is allowed without permission from the copyright holder or holders.

Natki z wykladu


Preliminaria matematyczne

Pojecie zbioru

rownosc, rownolicznosc, zbiory skonczone, przeliczalne

http://matematyka.pisz.pl/strona/1058.html

http://matematyka.pisz.pl/strona/1059.html

http://pl.wikibooks.org/wiki/Matematyka_dla_liceum/Liczby_i_ich_zbiory

Operacje na zbiorach:



Wyjasnienie paradoksu golibrody (Barber's Paradox) jako eleganckiego dowodu ze kazdy zpior ma wiecej podzbiorow niz elementow:

http://csc.csudh.edu/suchenek/Papers/Cantor_barber_Russell.doc

Wyrazenia logiczne

http://matematyka.pisz.pl/strona/1071.html

Kwantyfikatory

Zasada indukcji matematycznej

definiowanie przez indukcje

http://pl.wikipedia.org/wiki/Indukcja_matematyczna

Rekurencja

http://pl.wikipedia.org/wiki/Rekurencja

Listy

Indukcyjna definicja listy:

http://csc.csudh.edu/suchenek/wwsi/Def_list.pdf


Drzewa

drzewo binarne, pelne, completne, wlasnosci drzew

http://pl.wikipedia.org/wiki/Drzewo_(matematyka)






Definicje i wlasnosci drzew:

http://csc.csudh.edu/suchenek/wwsi/Def_tree.txt

Macierzowa reprezentacja kompletnego drzewa binarnego jako zbioru ciagow binarnych:

http://csc.csudh.edu/suchenek/wwsi/TreeSequentialRepresentation.pdf

Definicja drzewa poszukiwan binarnych:



http://csc.csudh.edu/suchenek/wwsi/Def_BS_tree

http://edu.i-lo.tarnow.pl/inf/utils/002_roz/mp001.php





Grafy

http://pl.wikipedia.org/wiki/Graf_(matematyka)

Mathematica


Rekurencja

Wieże Hanoi

http://wazniak.mimuw.edu.pl/images/9/91/kontener.html?nazwa_animacji=/images/c/c3/Wieza_hanoi


http://wazniak.mimuw.edu.pl/index.php?title=Matematyka_dyskretna_1/Wyk%C5%82ad_2:_Rekurencja

Ciekawe rozwiazanie zagadki (rysunek pochodzi z http://pballew.blogspot.com/2011/01/neat-solution-to-towers-of-hanoi.html ):




Stack (stos)

Operacje: construct, push, pop, i isEmpty?




Queue (kolejka)

Operacje: construct, enqueue, dequeue, isEmpty




Liniowa reprezentacja kolejki cyklicznej:




Inkrementacja front i rear odbywa sie modulo capacity (pojemnosc kolejki). Java syntax:  

front = (front + 1)  % capacity

rear = (rear + 1)  % capacity


My uzywac bedziemy "out" (wyjscie) zamiast "front" i "in" (wejscie) zamiast "rear".


ADT TREE

Wlozenie do drzewa poszukiwan binarnych:









Sekwencja wlozen do pustego drzewa poszukiwan binarnych:




Usuwanie z drzewa poszukiwan binarnych:




Zlozonosc obliczeniowa operacji na drzewach:






Drzewo niezbalansowane:




Drzewo zbalansowane:




Przypadkowe drzewo poszukiwan binarnych:



Dlugosc sciezki zewnetrznej i sciezki wewnetrznej:

http://csc.csudh.edu/suchenek/wwsi/External_internal_path.pdf


Liczba drzew binarnych o n wiezcholkach = liczba Catalana:

http://en.wikipedia.org/wiki/Catalan_number


Liczba permutacji n elementow = n!

Przyklady obliczen wysokosci drzew binarnych oraz kosztow operacji na typowych drzewach:

http://csc.csudh.edu/suchenek/wwsi/Balanced_tree.pdf

Liczba niskich drzew wyszukiwania binarnego:

http://csc.csudh.edu/suchenek/wwsi/Explicit_number_of_best_BST.pdf

Wykresy funkcji wykladniczej i logarytmu przy podstawie 2:



ADT GRAPH (graf)



Przyklad pozornie prostego problemu grafowego wymagajacego dlugotrwalych obliczen:

Kolorowanie wierzcholkow grafu.










Zastosowania grafow w rozproszonych bazach wiedzy:

http://csc.csudh.edu/suchenek/wwsi/Suma_Iloczyn_zagadka.pdf


Szacowanie zlozonosci problemow


    public static int f(int n)
     {
         if (n <= 1) return 1;
         if (n%2 == 0) return (f(n/2) + 1);
                else return (f(3*n + 1) + 1);

     }

It is not known whether the above program always halts or falls into an endless loop for some integer n.


Definicje i wlasnosci notacji "Duze O"

http://csc.csudh.edu/suchenek/wwsi/BigOh1.pdf

http://csc.csudh.edu/suchenek/wwsi/BigOhAllSmall3-500.pdf

http://csc.csudh.edu/suchenek/wwsi/BigOhAllShort2-10.pdf

http://csc.csudh.edu/suchenek/wwsi/WorstAvgRunTime.htm

http://csc.csudh.edu/suchenek/wwsi/AverageTimeBinSearch.htm

http://csc.csudh.edu/suchenek/wwsi/BSearchDecisionTree.htm


Funkcja Ackermanna - rosnie szybciej niz cokolwiek co mozesz precyzyjnie zapisac w notacji matematycznej.


This is a well tested program that computes one value of 3-argument Ackerman's function.
1st and 2nd argument are the numbers on which a two-argument operation is to be carried out.
3rd argument is an index of the operation.
E.g.,   A(k, m, 0) = k + m
    A(k, m, 1) = k * m
    A(k, m, 2) = k ^ m
etc.
*/

 public class Ackerman3arg
 {
 static long count = 0;

     public static void main (String [] args)
     {
//          int n = Integer.parseInt(args[0]);
//          int m = Integer.parseInt(args[1]);
//        int k = Integer.parseInt(args[2]);
                long n = 2;
                long m = 2; //second arg of "the" Ackermann's function
                long k = 3; //first arg of "the" Ackermann's function
              long a = A(2,m + 2, k - 1) - 3;
             System.out.print("A(" + n + ", " + m + ", " + k + ") = " +  a);
             System.out.println(" count = " +  count);

    }

    public static long A(long k, long m, long n)
    {
//         count++;
         if (n == 0) return m + k;
         else
         {
             if (m == 0)
             {
                 if (n == 1) return 0;
                 else
                                {
                                     if (n == 2) return 1;
                                     else return k;
                                }
             }

             else return A(k, A(k, m-1, n), n-1);
         }
     }
 }

/*
A(k, m, 0) = m + k;
A(k, 0, 1) = 0
A(k, 0, 2) = 1
A(k, 0, n+3) = k
A(k, m+1, n+1) = A(k, A(k, m, n+1), n)
*/
 
 /*
Note: "the" Ackermann function (with a simpler recurrence relation) refers to:
A(2, n+2, m-1) - 3
*/



 

 



 

 

 

 

 Please, contact me right away if you have any questions.

 

 


Copyright © 2011 Suchenek - All rights reserved