Bayram AKGÜL & Hakan KUTUCU

Slides:



Advertisements
Benzer bir sunumlar
Seramik Dental İmplantlar
Advertisements

BİYOGAZ HAZIRLAYANLAR : HAKAN DEMİRTAŞ
BÖLÜM 5 . KÜTLE BERNOULLI ENERJI DENKLEMİ
HAZIRLAYANLAR AYHAN ÇINLAR YUNUS BAYIR
Yeniliği Benimseyen Kategorilerinin Bütüncül ve Analitik Düşünme Açısından Farklılıkları: Akıllı Telefonlar için Bir İnceleme Prof. Dr. Bahtışen KAVAK,
Doç. Dr. Hatice Bakkaloğlu Ankara Üniversitesi
Newton’un Hareket Yasaları
19. VE 20. YÜZYILDA BİLİM.
Enerji Kaynakları-Bölüm 7
AKIŞKANLAR DİNAMİĞİ BÖLÜM 8 . BORULARDA AKIŞ.
İŞGÜCÜ PİYASASININ ANALİZİ
BRÜLÖR GAZ KONTROL HATTI (GAS TRAİN)
SES DONANIMLARI Ayşegül UFUK Saide TOSYALI
İŞLETİM SİSTEMİ İşletim Sistemi Nedir İşletim Sisteminin Görevleri
Tıbbi ve Aromatik Bitkilerin Hayvansal Üretimde Kullanımı
MUHASEBE YÖNETMELİĞİ KONFERANSI
Bu sitenin konusu kıyamete kadar hiç bitmeyecek
DUYUŞ VE DUYUŞSAL EĞİTİMİN TANIMI
ÇOCUKLARDA BRONŞİOLİT VE PNÖMONİ
Alien hand syndrome following corpus callosum infarction: A case report and review of the literature Department of Neurology and Radiology, Yantai Yuhuangding.
Parallel Dağılmış İşlemci (Parallel Distributed Processing)
TANJANT Q_MATRİS Aleyna ŞEN M. Hamza OYNAK DANIŞMAN : Gökhan KUZUOĞLU.
ADRESLEME YÖNTEMLERİ.
Diksiyon Ödevi Konu:Doğru ve etkili konuşmada
AZE201 ERKEN ÇOCUKLUKTA ÖZEL EĞİTİM (EÇÖE)
ÇUKUROVA ÜNİVERSİTESİ KARATAŞ TURİZM İŞLETMECİLİĞİ VE OTELCİLİK
EĞİTİMDE YENİ YÖNELİMLER
BAĞIMLILIK SÜRECİ Prof Dr Süheyla Ünal.
FACEBOOK KULLANIM DÜZEYİNİN TRAVMA SONRASI STRES BOZUKLUĞU, DEPRESYON VE SOSYODEMOGRAFİK DEĞİŞKENLER İLE İLİŞKİSİ  Psk. Asra Babayiğit.
BİLİŞİM TEKNOLOJİLERİ NEDİR?
PSİKO-SEKSÜEL (RUHSAL) PSİKO-SOSYAL
Sinir Dokusu Biyokimyası
Can, H. (1997). Organizasyon ve Yönetim.
Bölüm 9 OPERASYONEL MÜKEMMELİYETİ VE MÜŞTERİ YAKINLAŞMASINI BAŞARMA: KURUMSAL UYGULAMALAR VIDEO ÖRNEK OLAYLARI Örnek Olay 1: Sinosteel ERP Uygulamalarıyla.
ERGENLİKTE MADDE KULLANIMI
Şeyda GÜL, Fatih YAZICI, Mustafa SÖZBİLİR
MOL HESAPLARINDA KULLANILACAK BAZI KAVRAMLAR:
AKIŞKANLAR MEKANİĞİ 3. BASINÇ VE AKIŞKAN STATİĞİ
GAZLAR Yrd. Doç. Dr. Ahmet Emin ÖZTÜRK. GAZLAR Yrd. Doç. Dr. Ahmet Emin ÖZTÜRK.
Engellerin farkında mıyız?
CEZA MUHAKEMESİ HUKUKU
DİSİPLİN HUKUKU.
İZMİR.
ACİL YARDIM ve AFET YÖNETİMİ ÖĞRENCİLERİNİN KARAR VERME DÜZEYLERİ
Yazar:ZEYNEP CEREN YEŞİLYURT Danışman: YRD. DOÇ. DR
TEMEL MAKROEKONOMİ SORUNLARI VE POLİTİKA ARAÇLARI
IMPLEMENTATION OF SOME STOCK CONTROL METHODS USED IN BUSINESS LOGISTICS ON DISASTER LOGISTICS: T.R. THE PRIME MINISTRY DISASTER AND EMERGENCY MANAGEMENT.
Mikrodalga Sistemleri EEM 448
Örnekler Programlama Dillerine Giriş
Modülasyon Neden Gereklidir?
A416 Astronomide Sayısal Çözümleme - II
İSTATİSTİK II Hipotez Testleri 1.
4.BÖLÜM ÇAĞDAŞ BÜYÜME MODELLERİ
Ayçiçeği Neden Stratejik Ürün Olmalı?
Aydınlanma Işığın doğası ile ilgili bilgilerin tarihsel süreç içindeki değişimini farkeder. a. Dalga ve tanecik teorisinden bahsedilir,
Final Öncesi.
Sayısal Haberleşme.
ULUSLARARASI FİNANS.
Elektrik Enerjisi Üretimi, Dağılımı ve Depolanması
İÇ ORGANLARIN YAPISI VE İŞLEYİŞİ
DENK KUVVET SİSTEMLERİ
Dil Materyalleri ve Çalışmaları Doç. Dr. Müdriye YILDIZ BIÇAKÇI
Sosyal Bilimler Enstitüsü
Anlamsal Web, Anlamsal Web Dilleri ve Araçları
Hazırlayan; Görkem Baygın Yabancı Dil / M Şubesi 21 Maddede İngiliz Dili Edebiyatı Okumak Ne Demektir?
FURKAN EĞİTİM VAKFI TEFSİR USULÜNE GİRİŞ
BİN AYDAN DAHA HAYIRLI GECE KADİR GECESİ
Tarımsal nüfus ve tarımda istihdam
AKIŞKANLAR MEKANİĞİ 3. BASINÇ VE AKIŞKAN STATİĞİ
Emir ÖZTÜRK T.Ü. F.B.E. Bilg. Müh. A.B.D. Y.L. Semineri
Sunum transkripti:

Bayram AKGÜL & Hakan KUTUCU Convex Hull Problemi Bartın Üniversitesi Bilgisayar Programcılığı Bölümü Bayram AKGÜL & Hakan KUTUCU Karabük Üniversitesi Bilgisayar Mühendisliği Bölümü

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU İçerik Convex Hull Problemi Nedir? Nerelerde Kullanılabilir? Ccw yöntemi Convex Hull Özellikleri Çözüm Yöntemleri Brute Force Divide & Conquer Quick Hull Graham Scan Gift Wrapping Monotone Chain Incremental Convex Hull Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Nedir? S noktalar kümesi olsun: S = {p1, p2, p3, … ,pn} Bu noktalar kümesinin tüm elemanlarını içine alan düzlemde en küçük alanlı çokgeni, uzayda en küçük hacimli çok yüzlü cismi oluşturacak noktalar kümesini bulma problemidir. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Nerelerde Kullanılabilir Bilgisayar Grafikleri Görüntü İşleme Bilgisayar Oyunlarında Çarpışma Analizi CAD/CAM uygulamaları Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Özellikleri-1 Noktalar kümesindeki her hangi iki nokta seçilsin. Eğer kalan tüm noktalar seçilen noktaların oluşturduğu doğru parçasının aynı yönünde kalırsa bu iki nokta çokgenin gövdesinde yer alacaktır. Bir noktanın bir doğru parçasının hangi yönünde kaldığı nasıl bilinebilir? Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Ccw (counter clock wise) Bir noktanın başka iki noktaya göre durumunu gösterir. Örneğin a noktasından b noktasına gittikten sonra c noktasına gitmek için hangi yöne dönmeliyiz. Bu metot ile bir noktanın bir doğrunun hangi tarafında kaldığı anlaşılabilir. Determinant sonucu >0 𝑆𝑎ğ𝑎 𝐷ö𝑛üş <0 𝑆𝑜𝑙𝑎 𝐷ö𝑛üş =0 𝐷𝑜ğ𝑟𝑢𝑠𝑎𝑙 𝑐𝑐𝑤(𝑎,𝑏,𝑐)= 𝑎 𝑥 𝑎 𝑦 1 𝑏 𝑥 𝑏 𝑦 1 𝑐 𝑥 𝐶 𝑦 1 Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Özellikleri-2 Noktalar kümesindeki her hangi üç noktanın oluşturduğu üçgenin içinde kalan noktalar kesinlikle elenebilir. Üçgeni oluşturan noktalar da daha sonra başka üçgenler tarafından elenebilir. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Özellikleri-3 Noktalar kümesindeki uç noktalar (en küçük ve en büyük x ve y noktaları) birleştirilince içinde kalan noktalar kesinlikle elenebilir. Uç noktalar kesinlikle çokgenin gövdesinde yeralacaktır. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Özellikleri-4 Eğer noktalar x koordinatına göre (eşitse y koordinatına göre) küçükten büyüğe sıralanırsa her eklenen nokta çokgene eklenecektir. Burada hangi nokta veya noktaların çıkarılacağı bilinmelidir. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Özellikleri-5 Convex Hull noktalarında ilerlerken sonraki nokta her zaman önceki iki noktanın aynı tarafında yer alır. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Özellikleri-6 Uç nokta olarak en küçük y koordinatlı nokta kesinlikle çokgenin gövdesinde yer alır. Bir sonraki nokta tarama açısı en küçük olan nokta olacaktır. Bu şekilde devam ederek noktaların çevresi sarılabilir. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

İncelenecek Çözüm Yöntemleri Brute Force Divide & Conquer QuickHull Graham Scan Gift Wrapping Monotone Chain Incremental Convex Hull Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Brute Force – Tüm İhtimalleri Deneme Noktalar kümesindeki tüm nokta ikilileri için kalan noktaların aynı yönde kalıp kalmadığını test etme yöntemidir. Nokta sayısı N olsun. 2 elemanlı alt küme sayısı 𝐶(𝑛,2) = 𝑛 2 −𝑛 2 Her alt küme için tüm noktaları test etmenin maliyeti 𝑛 2 −𝑛 2 ∗𝑛=𝑂( 𝑛 3 ) Toplam A𝐥𝐥𝐠𝐨𝐫𝐢𝐭𝐦𝐚 𝐤𝐚𝐫𝐦𝐚ş𝚤𝐤𝐥𝚤ğ𝚤 𝑶( 𝒏 𝟑 ) Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Brute Force – Tüm İhtimalleri Deneme BruteForce(S, n) // S noktalar kümesi, n nokta sayısı CH ← Ø // boş liste for i ←1 to n for j ← 1 to n if i ≠ j for k ← 1 to n if j ≠ k Ʌ i ≠ k ccw(Si,Sj,Sk) < 0 break // veya > 0 if k = n // eğer döngü normal bitti ise CH.Add(Si,Sj) break Toplam Karmaşıklık 𝑶( 𝒏 𝟑 ) Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Divide & Conquer – Böl ve Fethet Problemi iki alt probleme bölüp alt problemleri çözme prensibine dayanmaktadır. Küçük bir kümede convex hull çözmek büyük bir kümede çözmekten çok daha hızlı olacaktır. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Divide & Conquer – Böl ve Fethet Noktaları x koordinatlarına göre sırala Kümeyi nokta sayısı ≤ 3 olana kadar recursive olarak ikiye böl Alt kümeler için çokgenleri oluştur Alt çokgenleri birleştir. Çokgenler nasıl birleştirilebilir? Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Divide & Conquer – Böl ve Fethet Noktaları x koordinatlarına göre sırala Kümeyi nokta sayısı ≤ 3 olana kadar recursive olarak ikiye böl Alt kümeler için çokgenleri oluştur Alt çokgenleri birleştir. Çokgenler nasıl birleştirilebilir? Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Divide & Conquer – Böl ve Fethet Noktaları x koordinatlarına göre sırala Kümeyi nokta sayısı ≤ 3 olana kadar özyinelemeli olarak ikiye böl Alt kümeler için çokgenleri oluştur Alt çokgenleri birleştir. Çokgenler nasıl birleştirilebilir? Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Divide & Conquer – Böl ve Fethet Noktaları x koordinatlarına göre sırala Kümeyi nokta sayısı ≤ 3 olana kadar özyinelemeli olarak ikiye böl Alt kümeler için çokgenleri oluştur Alt çokgenleri birleştir. Çokgenler nasıl birleştirilebilir? Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Divide & Conquer – Böl ve Fethet Noktaları x koordinatlarına göre sırala Kümeyi nokta sayısı ≤ 3 olana kadar özyinelemeli olarak ikiye böl Alt kümeler için çokgenleri oluştur Alt çokgenleri birleştir. Çokgenler nasıl birleştirilebilir? Alt teğet ve üst teğet bulma Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Divide & Conquer – Alt Teğet bulma A kümesinde en sağdaki nokta a olsun. B kümesinde en sağdaki nokta b olsun. 𝑎𝑏 A ve B kümesinin alt teğeti olmadığı sürece tekrarla 𝑎𝑏 A kümesinin alt teğeti olmadığı sürece a’yı saat yönünde ilerlet ( a = a-1) 𝑎𝑏 B kümesinin alt teğeti olmadığı sürece b’yi saat yönünün tersinde ilerlet ( b = b+1) Benzer şekilde üst teğeti bul AltTeğetBul(HA,HB) a←EnBüyükX (HA) b←EnKüçükX (HB) pi ∈ HA Ʌ qj ∈ HB while ccw(a,b,pi) > 0 Ʌ ccw(a,b,qj) > 0 do while(a,b,pi) > 0 a←a–1 (saat yönünde dön) while(a,b,qj) > 0 b←b+1 (saat yönü tersi dön) return (a,b) Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Divide & Conquer – Analiz T(n) = 2 T(n/2) + ϴ(n) ϴ(n) birleştirme zamanını ifade eder ve eğer en fazla O(n) zamanda birleştirebilirse toplam karmaşıklık O( n lg n) olur. Noktaları x koordinatlarına göre sırala - O(n lg n) Alt çokgenleri birleştirme - O(m) m = |HA|+|HB| ≤ |A|+|B|= n m ≤ n Çalışma Zamanı: O(n lg n) Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU QuickHull Aslında quick-sort gibi divide&conquer prensibine göre çalışır. Teorik olarak ortalama çalışma zamanı ϴ(n lg n)’dir. Eğer tüm noktalar çokgenin gövdesinde yer alacak şekilde dağılmışsa çalışma zamanı O(n2) olur. 2 ile 8 boyut arasında verimli bir şekilde çalışır. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU QuickHull En büyük ve en küçük x koordinatlarını bul ve listeye ekle. Bunlar kümeyi ikiye bölmek için kullanılacak a ve b noktaları olsun. Liste={a,b} a,b noktaları arasına bir çizgi çiz ve çizginin sağı ve solu olmak üzere noktaları iki ayrı kümeye ayır. 𝑎𝑏 doğrusunun sol tarafında doğruya en uzak p noktasını bul ve listede a ve b noktaları arasına ekle. Liste={a,p,b} Bulunan nokta ile oluşacak üçgenin içinde kalan noktalar convex hull parçası olamazlar, bir sonraki adım için ele. Önceki iki adımı yeni oluşan iki doğru( 𝑎𝑝 ve 𝑝𝑏 ) için tekrarla. Sol tarafta nokta kalmayınca 3. adımdan 𝑎𝑏 doğrusunun sağ tarafı için çözmeye başla. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU QuickHull En büyük ve en küçük x koordinatlarını bul ve listeye ekle. Bunlar kümeyi ikiye bölmek için kullanılacak a ve b noktaları olsun. Liste={a,b} a,b noktaları arasına bir çizgi çiz ve çizginin sağı ve solu olmak üzere noktaları iki ayrı kümeye ayır. 𝑎𝑏 doğrusunun sol tarafında doğruya en uzak p noktasını bul ve listede a ve b noktaları arasına ekle. Liste={a,p,b} Bulunan nokta ile oluşacak üçgenin içinde kalan noktalar convex hull parçası olamazlar, bir sonraki adım için ele. Önceki iki adımı yeni oluşan iki doğru( 𝑎𝑝 ve 𝑝𝑏 ) için tekrarla. Sol tarafta nokta kalmayınca 3. adımdan 𝑎𝑏 doğrusunun sağ tarafı için çözmeye başla. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU QuickHull En büyük ve en küçük x koordinatlarını bul ve listeye ekle. Bunlar kümeyi ikiye bölmek için kullanılacak a ve b noktaları olsun. Liste={a,b} a,b noktaları arasına bir çizgi çiz ve çizginin sağı ve solu olmak üzere noktaları iki ayrı kümeye ayır. 𝑎𝑏 doğrusunun sol tarafında doğruya en uzak p noktasını bul ve listede a ve b noktaları arasına ekle. Liste={a,p,b} Bulunan nokta ile oluşacak üçgenin içinde kalan noktalar convex hull parçası olamazlar, bir sonraki adım için ele. Önceki iki adımı yeni oluşan iki doğru( 𝑎𝑝 ve 𝑝𝑏 ) için tekrarla. Sol tarafta nokta kalmayınca 3. adımdan 𝑎𝑏 doğrusunun sağ tarafı için çözmeye başla. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU QuickHull En büyük ve en küçük x koordinatlarını bul ve listeye ekle. Bunlar kümeyi ikiye bölmek için kullanılacak a ve b noktaları olsun. Liste={a,b} a,b noktaları arasına bir çizgi çiz ve çizginin sağı ve solu olmak üzere noktaları iki ayrı kümeye ayır. 𝑎𝑏 doğrusunun sol tarafında doğruya en uzak p noktasını bul ve listede a ve b noktaları arasına ekle. Liste={a,p,b} Bulunan nokta ile oluşacak üçgenin içinde kalan noktalar convex hull parçası olamazlar, bir sonraki adım için ele. Önceki iki adımı yeni oluşan iki doğru( 𝑎𝑝 ve 𝑝𝑏 ) için tekrarla. Sol tarafta nokta kalmayınca 3. adımdan 𝑎𝑏 doğrusunun sağ tarafı için çözmeye başla. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU QuickHull En büyük ve en küçük x koordinatlarını bul ve listeye ekle. Bunlar kümeyi ikiye bölmek için kullanılacak a ve b noktaları olsun. Liste={a,b} a,b noktaları arasına bir çizgi çiz ve çizginin sağı ve solu olmak üzere noktaları iki ayrı kümeye ayır. 𝑎𝑏 doğrusunun sol tarafında doğruya en uzak p noktasını bul ve listede a ve b noktaları arasına ekle. Liste={a,p,b} Bulunan nokta ile oluşacak üçgenin içinde kalan noktalar convex hull parçası olamazlar, bir sonraki adım için ele. Önceki iki adımı yeni oluşan iki doğru( 𝑎𝑝 ve 𝑝𝑏 ) için tekrarla. Sol tarafta nokta kalmayınca 3. adımdan 𝑎𝑏 doğrusunun sağ tarafı için çözmeye başla. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU QuickHull En büyük ve en küçük x koordinatlarını bul ve listeye ekle. Bunlar kümeyi ikiye bölmek için kullanılacak a ve b noktaları olsun. Liste={a,b} a,b noktaları arasına bir çizgi çiz ve çizginin sağı ve solu olmak üzere noktaları iki ayrı kümeye ayır. 𝑎𝑏 doğrusunun sol tarafında doğruya en uzak p noktasını bul ve listede a ve b noktaları arasına ekle. Liste={a,p,b} Bulunan nokta ile oluşacak üçgenin içinde kalan noktalar convex hull parçası olamazlar, bir sonraki adım için ele. Önceki iki adımı yeni oluşan iki doğru( 𝑎𝑝 ve 𝑝𝑏 ) için tekrarla. Sol tarafta nokta kalmayınca 3. adımdan 𝑎𝑏 doğrusunun sağ tarafı için çözmeye başla. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

QuickHull Algoritması Input : S noktalar kümesi Output: CH convex hull noktaları listesi QuickHull(S) a ← EnKüçükX (S) b ← EnBüyükX (S) CH.Add(a,b) for i ←1 to |S| if ccw(a,b,S[i]) < 0 LS.Add(S[i]) else RS.Add(S[i]) NoktaEkle (CH, a,b, LS) NoktaEkle(CH, b, a, RS) return CH NoktaEkle(hull, a, b, 𝑺 ) // 𝑆 alt küme Index ←IndexOf(b) p ←EnUzakNokta( 𝑎𝑏 , 𝑆 ) hull.Insert(Index,p)   for i ←1 to | 𝑆 | if ccw(a,p, 𝑆 [i]) < 0 then LAP.Add( 𝑆 [i]) // 𝑎𝑝 ’nin sol tarafı if ccw(p,b, 𝑆 [i]) < 0 then LPB.Add( 𝑆 [i]) // 𝑝𝑏 ’nin sol tarafı NoktaEkle(a,p,LAP) NoktaEkle(p,b,LPB) Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU Graham Scan Yöntem ismini Ronald Graham’ın 1972 yılında yayınladığı makalesinden almaktadır Bir sonraki nokta her zaman iki önceki noktanın aynı yönünde olması prensibine dayanmaktadır. Burada ilk iki noktanın öncelikli olarak bulunması gerekmektedir. Bu yöntem ile çözüme başlamak için öncelikle en küçük y koordinatı olan nokta bulunur. Bu noktaya göre diğer tüm noktalar polar açılarına göre sıraya konulur. Bir noktaya göre başka bir noktanın polar açısı 𝑡𝑎𝑛 −1 𝑦 2 − 𝑦 1 𝑥 2 − 𝑥 1 şeklinde bulunabilir. Eklenecek her nokta için sıraya konulmuş sonraki noktaya bakılır. Eğer yön değiştirme varsa yönün değiştiği nokta çıkarılır, sonraki noktaya bakılır Bu yöntem için bağlı-liste veya stack veri yapısı kullanılabilmektedir. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Graham Scan – Liste Kullanımı Y koordinatı en küçük noktayı bul - p0 Bu noktaya göre diğer noktaları polar açılarına göre sırala Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Graham Scan – Liste Kullanımı Y koordinatı en küçük noktayı bul - p0 Bu noktaya göre diğer noktaları polar açılarına göre sırala Tüm noktaları sırasına göre listeye ekle Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Graham Scan – Liste Kullanımı Y koordinatı en küçük noktayı bul - p0 Bu noktaya göre diğer noktaları polar açılarına göre sırala Tüm noktaları sırasına göre listeye ekle Saat yönünün tersinde taramaya başla, her hangi bir yerde yön değiştirme varsa o noktayı çıkar Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Graham Scan – Liste Kullanımı Y koordinatı en küçük noktayı bul - p0 Bu noktaya göre diğer noktaları polar açılarına göre sırala Tüm noktaları sırasına göre listeye ekle Saat yönünün tersinde taramaya başla, her hangi bir yerde yön değiştirme varsa o noktayı çıkar Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Graham Scan – Liste Kullanımı Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Graham Scan – Stack Kullanımı Y koordinatı en küçük noktayı bul - p0 Bu noktaya göre diğer noktaları polar açılarına göre sırala Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Graham Scan – Stack Kullanımı Y koordinatı en küçük noktayı bul - p0 Bu noktaya göre diğer noktaları polar açılarına göre sırala Saat yönünün tersine ilerle, eğer yön değişmezse stack’e ekle Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Graham Scan – Stack Kullanımı Y koordinatı en küçük noktayı bul - p0 Bu noktaya göre diğer noktaları polar açılarına göre sırala Saat yönünün tersine ilerle, eğer yön değişmezse stack’e ekle Yön değiştirme varsa son eklenen noktayı çıkar Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Graham Scan – Stack Kullanımı Y koordinatı en küçük noktayı bul - p0 Bu noktaya göre diğer noktaları polar açılarına göre sırala Saat yönünün tersine ilerle, eğer yön değişmezse stack’e ekle Yön değiştirme varsa son eklenen noktayı çıkar Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Graham Scan – Stack Kullanımı Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU Stack kullanımı Graham Scan Input : S noktalar kümesi Output: CH convex hull noktaları için stack GrahamScan (S) CH← Ø // boş stack p0←EnKüçükY(S) PolarSort(p0, S) CH.Push(p0), CH.Push(S[1]), CH.Push(S[2]) for i←3 to |S| Top←CH.Top(), Next←CH.Pop() while cww(Top,Next,S[i])≤0 Top←CH.Top() if |CH| ≤ 1 break Next←CH.Pop() CH.Push(Top) CH.Push(S[i]) return CH Liste Kullanımı Input : S noktalar kümesi Output: CH convex hull noktaları listesi GrahamScan (S) CH← Ø // boş liste p0 ← EnKüçükY(S) CH ← PolarSort(p0, S) for i ←2 to |CH|-1 while cww(CH[i-1],CH[i],CH[i+1]) ≤0 CH.RemoveAt(i) i←i-1 if i≤1 break return CH Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU Graham Scan - Analiz En Küçük y koordinatlı noktayı bulma – O(n) Sıralama O(n lg n) Çokgen oluşturma Liste için uymayanı çıkarma O(n) Stack için sonraki noktayı ekleme O(n) Çalışma Zamanı: O( n lg n) Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Gift Wrapping (Jarvis March) Yöntemi 1973 yılında R.A. Jarvis tarafından geliştirilmiştir. Bu yöntemin ismi iki boyutlu durumlar için Jarvis March olarak ta anılmaktadır. Bir sonraki nokta iki önceki noktanın oluşturduğu doğruya göre en az tarama açısına sahip nokta olmalıdır. Bu prensibe göre çözüm yapılmaktadır. Graham Scan metoduna göre avantajı başlangıçta noktaları sıralamaya gerek yoktur. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Gift Wrapping (Jarvis March) Yöntemi Yönteme başlarken en alt nokta bulunur ve listeye eklenir Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Gift Wrapping (Jarvis March) Yöntemi Yönteme başlarken en alt nokta bulunur ve listeye eklenir Bu noktaya göre diğer tüm noktalara tarama açısı bulunur. En az tarama açısı sonraki nokta olacaktır. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Gift Wrapping (Jarvis March) Yöntemi Yönteme başlarken en alt nokta bulunur ve listeye eklenir Bu noktaya göre diğer tüm noktalara tarama açısı bulunur. En az tarama açısı sonraki nokta olacaktır. Bu kez son iki noktaya göre en küçük tarama açısı bulunur, sonraki nokta bu nokta olacaktır. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Gift Wrapping (Jarvis March) Yöntemi Yönteme başlarken en alt nokta bulunur ve listeye eklenir Bu noktaya göre diğer tüm noktalara tarama açısı bulunur. En az tarama açısı sonraki nokta olacaktır. Bu kez son iki noktaya göre en küçük tarama açısı bulunur, sonraki nokta bu nokta olacaktır. Bu işlem başlanılan yere geri dönene kadar devam eder. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Gift Wrapping (Jarvis March) Yöntemi Yönteme başlarken en alt nokta bulunur ve listeye eklenir Bu noktaya göre diğer tüm noktalara tarama açısı bulunur. En az tarama açısı sonraki nokta olacaktır. Bu kez son iki noktaya göre en küçük tarama açısı bulunur ve sonraki nokta bu nokta olacaktır. Bu işlem başlanılan yere geri dönene kadar devam eder. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Gift Wrapping (Jarvis March) Yöntemi Yönteme başlarken en alt nokta bulunur ve listeye eklenir Bu noktaya göre diğer tüm noktalara tarama açısı bulunur. En az tarama açısı sonraki nokta olacaktır. Bu kez son iki noktaya göre en küçük tarama açısı bulunur ve sonraki nokta bu nokta olacaktır. Bu işlem başlanılan yere geri dönene kadar devam eder. Başlanılan yere geri geldiyse son eklenen noktayı çıkar ve işlemi bitir. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU Gift Wrapping - Analiz Input : S noktalar kümesi Output: CH convex hull noktaları listesi GiftWrapping (S) CH← Ø // boş liste Pminy←EnKüçükY(S) CH.Add (Pminy) lastAngle←0 Pcurrent = Pminy repeat minRotAngle←10000 // büyük bir sayı for i←1 to |S| angle ← AngleOf(Pcurrent ,S[i]) rotAngle ← (2𝜋 – (lastAngle –angle)) if rotAngle < minRotAngle minRotAngle ←rotAngle minAngle ← angle Pnext ← S[i] lastAngle ← minAngle CH.Add(pNext) Pcurrent ← Pnext until Pcurrent ≠ Pminy return CH En küçük y koordinatlı noktayı bulma - O(n) Her nokta için tarama açısı bulma O(n) Bulunan her kenar noktası için tarama açısı bulma O(hn) olur. h çokgende kenar noktası sayısı olacaktır ve herzaman ≤ n dir. Eğer h n’ye göre çok küçük olsa çok etkili bir algoritma olacaktır. Maksimum çalışma zamanı O(n2) olur. Ortalama çalışma zamanı O(nh) d boyutlu olursa 𝑂(𝑛 𝑑 2 ) Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU Monotone Chain 1979 yılında A.M. Andrew tarafından Graham Scan algoritmasına alternatif olarak sunulmuştur Andrew’e göre eğer bir sıralama yapılacaksa daha karmaşık açısal sıralama yapmak yerine daha basit olan koordinatlara göre sıralama yapmak daha az maliyetli olacaktır. Bu yöntem ile en soldan en sağa alttan ve üstten iki gövde oluşturularak convex hull oluşturulur. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU Monotone Chain Noktalar x koordinatlarına göre (eğer eşitse y koordinatlarına göre) sıraya dizilir. Önce ilk iki nokta(halka) listeye(zincire) eklenir. Tüm noktalar(halkalar) sırasıyla listeye (zincire) eklenecektir Listeye eklemeden önce daha önce listeye eklenmiş olan son iki noktaya bakılır. Eğer bu iki noktaya göre eklenecek nokta sol tarafa düşüyorsa son eklenmiş nokta çıkarılır ve bu şarta bir daha bakılır, bu şart sağlanmadığı sürece listenin son elemanı çıkarılır. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU Monotone Chain Noktaları x koordina göre sırala Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Monotone Chain – Alt gövde oluşturma Noktaları x koordina göre sırala İlk iki noktayı listeye ekle ve sola dönüş varsa sonraki noktayı ekle Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Monotone Chain – Alt gövde oluşturma Noktaları x koordina göre sırala İlk iki noktayı listeye ekle ve sola dönüş varsa sonraki noktayı ekle Sağa dönüş varsa son noktayı çıkar, sonra ekle Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Monotone Chain – Alt gövde oluşturma Noktaları x koordina göre sırala İlk iki noktayı listeye ekle ve sola dönüş varsa sonraki noktayı ekle Sağa dönüş varsa son noktayı çıkar, sonra ekle Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Monotone Chain – Alt gövde oluşturma Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Monotone Chain- Analiz MonotoneChain (S) CH← Ø // boş liste Sort(S) // alt zincir for i←1 to |S| if |CH| ≥ 2 while cww(CH[Last-1],CH[Last],S[i])≤0 CH.RemoveLast() if |CH| < 2 break CH.Add(S[i])   // üst zincir t ←|CH| for i← |S|-2 down to 1 if |CH| ≥ t return CH Monotone Chain- Analiz Sıralama O(n log n) Alt gövde oluşturma O(n) Toplam Maliyet O(n log n) Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Incremental Convex Hull Yöntemi Noktaları X koordinatlarına göre (eşit ise y koordinatlarına göre) sıraya koyup sırayla çokgenin gövdesine dahil etme prensibine dayanır. Noktalar sıralı olduğuna göre eklenecek her nokta muhakkak çokgenin gövdesine girecektir. Eklenen her nokta çokgenin gövdesinden bazı noktaları çıkarabilir. Bir sonraki adım için çıkacak noktaları bulup çokgeni güncellemek gerekecektir. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Incremental Convex Hull Yöntemi Divide & Conquer Yönteminde birleştirmeyi hatırlayalım. İki çokgeni birleştirme prensibine göre yeni eklenen nokta sanki bir çokgenmiş gibi iki çokgen birleştirilir. Divide & Conquer metodundaki birleştirme adımını aynısı İki çokgen için alt teğet ve üst teğet bulunup birleştirilir. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Incremental Convex Hull Yöntemi- Analiz Sıralama O (n lg n) Birleştime O(n) Çalışma Zamanı: O(n lg n) Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Karşılaştırma - Asimptotik Algoritma Zaman Karmaşıklığı En iyi durum En kötü durum Brute Force O(n3) Divide & Conquer O(nlgn) QuickHull O(n2) Graham Scan Monotone Chain Gift Wrapping O(nh) Incremental Convex Hull Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Karşılaştırma – CPU Çalışma Zamanları (ms) ALGORİTMA NOKTA SAYISI 103 104 105 106 107 Brute Force 156 14139 2723598 N/A Divide & Conquer 16 1842 18318 QuickHull ≈0 3 31 360 3519 Graham Scan 47 484 5699 64184 Monotone Chain 6 63 807 9998 Gift Wrapping 424 4219 46502 Incremental Convex Hull 516 6012 78595 Sistem Özellikleri İşletim Sistemi Windows 8.1 x64 Programlama ortamı Microsoft Visual Studio 2013 Programlama Dili C# (5.0) – (.NET Framework 4.5) İşlemci Intel Core2 Quad Q8400 2.66 GHz Sistem Belleği 4 GB (DDR3) Süreler ms cinsindendir. Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU Sonuç ve Öneriler Bu makalede convex hull problemi tanıtılarak bu problemi çözen algoritmalar incelenmiş, algoritmalarının çalışma zamanları asimptotik olarak incelenmiştir. Ayrıca algoritmaların daha da anlaşılır olması için çalışma adımları şekiller ile görselleştirilmiştir. Bu makale kapsamında convex hull problemini çözen algoritmaların animasyon programları hazırlanmıştır. Bu program algoritma analizi gibi derslerde bir algoritmanın işlem adımlarını görselleştirmek için yardımcı bir kaynak olarak kullanılabilir. Ayrıca bu program bir sonraki çalışmada üç boyutlu uzayda convex hull problemi için bir alt yapı olarak kullanılacaktır. Bir sonraki çalışma (CPU+GPU) paralelleştirerek d boyutlu convex hull çözme Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU

Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU Kaynaklar B. Praveen, R. Wenger, R. Crawfis, Isosurface construction in any dimension using convex hulls, IEEE Transactions on Visualization and Computer Graphics 10 (2004) 130–141. Chennakesava R. Alavala, “CAD/CAM: Concepts and Applications”,PHI Learning, 2011. Liu, Rong, Hao Zhang and James Busby. 2008. "Convex hull covering of polygonal scenes for accurate collision detection in games." In Proceedings of graphics interface 2008. Windsor, Ontario, Canada: Canadian Information Processing Society. B. Yuan, C.L. Tan, Convex hull based skew estimation, Pattern Recognition 40 (2007) 456–475 Zhang, X. and Tang Z., A Fast Convex Hull Algorithm for Binary Image, Informatica 34 (2010) 369-376, 2009 Robert Sedgewick and Kevin Wayne, Geometric Primitives, Algorithms, 4th Ed., http://algs4.cs.princeton.edu/91primitives/ J. O’Rourke. Computational Geometry in C (2nd ed.). Cambridge University Press, 1998. T. M. Chan. A minimalist’s implementation of the 3-d divide-and-conquer convex hull algorithm. Technical report, University of Waterloo, 2003. Franco P. Preparata, S.J. Hong. Convex Hulls of Finite Sets of Points in Two and Three Dimensions, Commun. ACM, vol. 20, no. 2, pp. 87–93, 1977. Graham, R.L. (1972). An Efficient Algorithm for Determining the Convex Hull of a Finite Planar Set. Information Processing Letters 1, 132-133 Jarvis, R. A. (1973). "On the identification of the convex hull of a finite set of points in the plane". Information Processing Letters 2: 18–21. A.M. Andrew, "Another Efficient Algorithm for Convex Hulls in Two Dimensions", Info. Proc. Letters 9, 216-219 (1979) Convex Hull Problemi Bayram AKGÜL & Hakan KUTUCU