Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Benzer belgeler
Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Bölüm 5. Ağaç. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 73

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

YMT219 VERİ YAPILARI ÖDEV-1

Arasınav Örnek Soruları Bahar 2018

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

D İ Z İ L E R A R R A Y S

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

NESNEYE DAYALI PROGRAMLAMA 11. HAFTA UYGULAMA DERSİ

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

Mantıksal (Logic) Operatörler

Final Sınavı Örnek Soruları Bahar 2018

yeni_uye_kayit.ascx UserControl sayfamızda, kaydedilmek istenen üye eğer daha önce veritabanımızda kayıtlı ise bunu buldurup kullanıcıyı uyaralım;

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

YZM 2116 Veri Yapıları

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Yazılım Kodlama ve İ simlendirme Standartları v1.0

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.

İlköğretim 6.Sınıf Viyola Eğitiminde Birinci Yıl

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Progress Barlı, FTP Dosya Upload Appleti

Sınav Dağılım & IMKB Endeks

Class HashSet. Metotlar. Class HashSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.hashset

Soru 1: Fahrenheit cinsinden verilen sıcaklığı Kelvin'e çeviren bir program yazınız. Aşağıdaki dönüşüm formülünü kullanabilirsiniz:

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Programlama Dili Prensipleri. Lab Notları 4

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

GENETİK ALGORİTMA GEZGİN SATICI ÖDEVİ

Java String İşlemleri

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

BİL-141 Bilgisayar Programlama I (Java)

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

MySqlConnection connection; MySqlCommand command; MySqlDataReader reader; MySqlDataAdapter adapter; DataTable table;

Karşılaştırma İşlemleri ve Koşullu İfadeler

Akış Konrol Mekanizmaları

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

KRİPTOANALİZ DERSİ FİNAL ÖDEVİ. PSO ile TRANSPOSITION CIPHER ÇÖZÜMÜ

Proje 1. Arayüz Tasarımı

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Alıştırma 1: Yineleme

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

İl İlçe uygulaması. : Seçilen ile ait ilçeleri listeleyen program. //İl değişkeni için kodu aşağıdaki sayfadan kopyalayınız.

Java da Program Denetimi ve Operatörler

public class SalesLineItem // Java { private int quantity; private ProductSpecification description; public Money getsubtotal() {...

Insertion Sort. (Sokuşturma Sıralaması)

ALGORTMA ve PROGRAMLAMA - II (C# Sürümü) DERS NOTLARI

BİL132 Bilgisayar Programlama II

Görsel Programlama (Visual Programming)

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

YIĞIT STACK. Yrd. Doç. Dr. Aybars UĞUR

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

Đlgili konular: Collection, Set, HashSet, Comparable, Comparator, TreeMap, Collections.synchronizedSortedSet(SortedSet), Serialized Form

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

KUYRUKLAR. Doç. Dr. Aybars UĞUR

/*int sayi1, sayi2,toplam=0;

Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.


Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

BAĞLI LİSTELER BAĞLI LİSTELER

Standart Veri Tipleri

JAVADA DİZİ İŞLEMLERİ

Sunum İçeriği. Programlamaya Giriş

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Week 9: Trees 1. TREE KAVRAMI 3. İKİLİ AĞAÇ DİZİLİMİ 4. İKİLİ ARAMA AĞACI 2. İKİLİ AĞAÇ VE SUNUMU > =

Dizi ( Array ) ve Dizgi ( String )

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

JAVA DEĞİŞKEN VE OPERATÖRLER. M.İLKUÇAR - 1

HASH(KARMA) TABLOSU VERİ YAPISI

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

CharArrayReader. Kılgıladığı Arayüzler: Bildirimi: Değişkenleri (fields): java.io.reader Sınıfından Kalıtsal Gelen Değişken:

Görsel Programlama. Temel Veri Tipleri, Değişkenler, Operatörler, Akış Kontrolü, Sınıflar, Metotlar, Paketler ve JavaDoc

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

Java Applet Üzerine Form Nesnelerini Eklemek

11- FONKSİYONLAR (FUNCTIONS)

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

MOBİL UYGULAMA GELİŞTİRME

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

String (Dizgi) İşlemleri

Transkript:

Bölüm 8. Ayrık Küme Olcay Taner Yıldız 2014 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 1 / 16

O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 2 / 16

Sekiz ögeden oluşan bir ayrık küme veri yapısının gösterimi 2 1 4 3 0 5 6 7 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 3 / 16

Sekiz ögeden oluşan bir ayrık kümeler grubunun üç ana parçasının gösterimi 0 1 2 3 4 5 6 7 İçerik 0 1 2 3 4 5 6 7 Ebeveyn 2 1 2 2 4 1 3 5 Derinlik 1 3 3 2 1 2 1 1 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 4 / 16

İçeriği bir sayı olan öge gösterimi 1 public class Oge{ 2 int icerik; 3 int ebeveyn; 4 int derinlik ; 5 public Oge(int icerik){ 6 this.icerik = icerik ; 7 ebeveyn = icerik; 8 derinlik = 1; 9 } 10 } O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 5 / 16

Her elemanı bir ögeden oluşan ayrık kümeler gösterimi 1 public class Ayrikkume{ 2 Oge kumeler[]; 3 int kactane; 4 public Ayrikkume(int N){ 5 int i; 6 kumeler =new Oge[N]; 7 kactane = N; 8 for (i = 0; i < N; i++) 9 kumeler[i] = new Oge(i); 10 } 11 } O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 6 / 16

O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 7 / 16

Sıra numarası verilen bir ögenin ait olduğu kümeyi döndüren fonksiyon 1 int kumebul(int sira){ 2 if (kumeler[sira ]. ebeveyn!= sira) 3 return kumebul(kumeler[sira].ebeveyn); 4 return kumeler[sira].ebeveyn; 5 } O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 8 / 16

Göstericisi 2 ve 4 olan kümelerin iki değişik şekilde birleştirilmesi 2 4 3 0 4 2 6 3 0 6 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 9 / 16

Göstericisi 1 ve 2 olan kümelerin iki değişik şekilde birleştirilmesi 2 1 3 0 1 5 2 6 5 7 3 0 7 6 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 10 / 16

Sıra numarası verilen iki ögenin kümelerini birleştiren fonksiyon 1 void kumebirlestir(int sira1, int sira2){ 2 int x, y; 3 x = kumebul(sira1); 4 y = kumebul(sira2); 5 if (kumeler[x]. derinlik < kumeler[y]. derinlik ) 6 kumeler[x].ebeveyn = y; 7 else{ 8 kumeler[y].ebeveyn = x; 9 if (kumeler[x]. derinlik == kumeler[y]. derinlik ) 10 kumeler[x]. derinlik ++; 11 } 12 } O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 11 / 16

Ayrık Küme Küme Bulma: O(logN) Küme Birleştirme: O(logN) O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 12 / 16

O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 13 / 16

Örnek ABCEGFE BCdFHGa birinci karakterden A= B, ikinci karakterden B= C, dolayısıyla A= B= C, üçüncü karakterden C= d, dolayısıyla A= B= C= d, dördüncü karakterden E= F, beşinci karakterden G= H, altıncı karakterden F= G, dolayısıyla E= F= G= H, yedinci karakterden E= a, dolayısıyla E= F= G= H= a O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 14 / 16

Şifre çözümü probleminin uygulanması (1) 1 boolean kataresleme(string birinci, String ikinci ){ 2 int kume1, kume2, i; 3 Ayrikkume a; 4 a = new Ayrikkume(26); 5 for (i = 0; i < birinci.length; i ++){ 6 kume1 = a.kumebul(birinci.charat(i) - A ); 7 kume2 = a.kumebul(ikinci.charat(i) - A ); 8 if ( birinci.charat(i) >= a && birinci.charat(i) <= z ) 9 if ( ikinci.charat(i ) >= a && ikinci.charat(i) <= z ) 10 if ( birinci.charat(i )!= ikinci.charat(i )) 11 return false; 12 else{ 13 if (a.kumeler[kume2].icerik!= - 1){ 14 if (a.kumeler[kume2].icerik!= birinci.charat(i) - a ) 15 return false; 16 }else 17 a.kumeler[kume2].icerik = birinci.charat(i ) - a ; 18 } O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 15 / 16

Şifre çözümü probleminin uygulanması (2) 19 else 20 if ( ikinci.charat(i ) >= a && ikinci.charat(i) <= z ){ 21 if (a.kumeler[kume1].icerik!= -1){ 22 if (a.kumeler[kume1].icerik!= ikinci.charat(i ) - a ) 23 return false; 24 }else 25 a.kumeler[kume1].icerik = ikinci.charat(i ) - a ; 26 }else{ 27 a.kumebirlestir(kume1, kume2); 28 if (a.kumeler[kume1].icerik!= a.kumeler[kume2].icerik) 29 if (a.kumeler[kume1].icerik == -1) 30 a.kumeler[kume1].icerik = a.kumeler[kume2].icerik; 31 else 32 if (a.kumeler[kume2].icerik == -1) 33 a.kumeler[kume2].icerik = a.kumeler[kume1].icerik; 34 else 35 return false; 36 } 37 } 38 return true; 39 } O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 16 / 16