• Sonuç bulunamadı

Yaz›2 Yaz›1 Geçen Say›m›zdaki Sorular›n Çözümleri Haberleflme 2 Haberleflme proGramc›lar ifl bafl›na

N/A
N/A
Protected

Academic year: 2021

Share "Yaz›2 Yaz›1 Geçen Say›m›zdaki Sorular›n Çözümleri Haberleflme 2 Haberleflme proGramc›lar ifl bafl›na"

Copied!
1
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

p r o G r a m c › l a r i fl b a fl › n a

Haberleflme

P›nar evde parti yapmaya karar verir. Telefonunda numaras› kay›tl› olan okul arkadafllar›n›n hepsini aray›p davet eder ve onlardan da telefonlar›nda ka-y›tl› olan okul arkadafllar›n›n hepsini aramas›n› is-ter. Hatta zincirleme bir flekilde haberi alan herke-sin arayabilece¤i bütün okul arkadafllar›n› aramas›-n› ister. Sizden istenen P›nar'›n partisine kaç kifli-nin davet edildi¤ini bulmak.

Varsay›mlar

• Okulda nadet ö¤renci vard›r (2 ≤ n≤1000). • Her ö¤rencinin bir okul numaras› vard›r. Bu nu-maralar 1 ile naras›ndad›r ve herkesin numaras› farkl›d›r.

•P›nar'›n ö¤renci numaras› 1'dir. Girdi

• Girdiler “haberlesme.gir” isimli dosyadan oku-nacakt›r.

• ‹lk sat›rda ö¤renci say›s›n› ifade eden n verile-cektir.

• Takip eden nsat›rda, okul numaras› 1 olan ö¤-renciden bafllayarak s›ras›yla bütün ö¤rencilerin telefonunda kay›tl› olan arkadafllar›n›n okul nu-maras› verilecektir. Her sat›rda ilk önce bir adet tamsay›, o ö¤rencinin telefonunda kay›tl› okul ar-kadafl› say›s›n› ifade edecek, daha sonra o say› kadar tamsay› da telefonunda kay›tl› ö¤rencilerin okul numaras›n› gösterecektir.

Ç›kt›

• Ç›kt›lar “haberlesme.cik” isimli dosyaya yaz›lmal›. • Tek bir say› bulunacakt›r. Kaç kiflinin davet edil-di¤ini gösterecektir. Ö Örrnneekk haberlesme.gir: 5 2 2 5 1 1 2 5 1 1 2 2 3 1 haberlesme.cik: 3

2, 3 ve 5 numaral› ö¤rencilere ulafl›lm›flt›r.

© A l i G a l i p B a y r a k

ODTÜ Bilgisayar Toplulu¤u’nun Bilim ve Teknik için haz›rlad›¤› bu sayfayla, bilgisayar bilimlerinin temel problemlerini tan›tmay› amaçl›yoruz. Bu problemler için herhangi bir dilde yazaca¤›n›z çözüm kodunu bteknik@tubitak.gov.tr adresine yollayabilirsiniz. Her ay sonunda o ay›n çözümlerine ve yap›lan de¤erlendirme sonucu toplad›¤›n›z puanlara web sitemizden (www.biltek tubitak.gov.tr) ulaflabilirsiniz. Y›l sonunda en fazla puan toplayan

yar›flmac›ya özel bir ödül verece¤iz. ‹lgilenenler için ODTÜ Bilgisayar Toplulu¤u’nun web sitesi: http://www.cclub.metu.edu.tr/biltek

Haberleflme 2

AAA flirketinde çal›flanlar aras› haberleflme ilginç bir sistemle yürütülmektedir. Bu sisteme göre, her eleman›n daha önceden belli ve de¤iflmeyen listesi vard›r ve toplant› olaca¤› zaman bu listede-ki di¤er bütün elemanlara kendisindelistede-ki bütün bil-gileri ulaflt›rmas› gerekmektedir (kendisine bafl-kalar›ndan yeni gelen bilgiler de dahil). Yeni ge-len müdür ilk toplant›s›n› yapt›ktan sonra farke-der ki, bu sistemde bir sorun vard›r. Çünkü bütün belgeler herkese ulaflamamaktad›r. Bunun üzeri-ne müdür tüm elemanlar›n listelerini al›r ve onla-ra toplamda en az say›da ekleme yapaonla-rak bu so-runu düzeltebilece¤ini söyler. Sizden istenen bu konuda yeni müdüre yard›mc› olman›z. Varsay›mlar

• fiirkette n adet çal›flan vard›r (2 <=n <=

1000).

• Her çal›flan›n listesinde en az bir kifli vard›r. • Her çal›flan›n bir numaras› vard›r. Bu numara-lar 1 ile naras›ndad›r ve herkesin numaras› fark-l›d›r.

Girdi

• Girdiler “haberlesme2.gir” isimli dosyadan okunacakt›r.

• ‹lk sat›rda çal›flan say›s›n› ifade eden n verile-cektir.

• Takip edennsat›rda, 1 numaral› elemandan bafllayarak s›ras›yla bütün elemanlar›n listeleri ve-rilecektir. Her sat›rda ilk önce bir adet tamsay›, o eleman›n listesindeki kifli say›s›n› ifade edecek, daha sonra o say› kadar tamsay› da listesindeki elemanlar›n numaras›n› gösterecektir.

Ç›kt›

• Ç›kt›lar “haberlesme2.cik” isimli dosyaya

yaz›lmal›d›r.

• Tek bir say› bulunacakt›r. Yap›lmas› gereken ekleme say›s›n› vermelidir.

Ö Örrnneekk haberlesme2.gir: 5 2 2 5 1 4 2 5 1 1 2 1 3 haberlesme2.cik: 1

2 nolu eleman›n listesine 1 nolu eleman› eklersek istenileni yapm›fl oluruz (farkl› flekillerde de sorunu halledebiliriz).

Yaz› 1

Bu problem bilgisayar biliminde “Longest Common Substring” yani “en uzun ortak alt diz-gi” olarak bilinir. Anlataca¤›m çözüm dinamik programlama kullan›r ve bu problemin en verim-li çözüm yöntemlerindendir. Dinamik programla-ma, genel olarak, sonucunu bildi¤imiz küçük par-çalar› kullanarak büyük parpar-çalar› çözme esas›na dayan›r. Bu problemde flöyle bir çözüm yöntemi kullanabiliriz:

Birinci dizgiye (yaz›ya) A, ikinci dizgiye B di-yelim.

A[i] ile birinci dizginin i’inci karakterini, B[j] ile ikinci dizginin j’inci karakterini ifade edelim.

U(i, j), A’n›n ilk i adet karakterinin ve B’nin ilk j adet karakterinin A[i] ve B[j]’yi içeren en uzun ortak alt dizginin uzunlu¤u olsun. Örnek verecek olursak:

abcdefgh lmnbcdkls

dizgilerini ele ald›¤›m›z zaman, U(4, 6) = 3 olur (birinci dizginin 4. harfiyle ve ikinci dizginin 6. harfiyle biten en uzun ortak alt dizgi “bcd”dir).

1≤ i ≤ m ve 1 ≤ j ≤ n ve U(0, 0) = 0, U(0, j) = 0 ve U(i, 0) = 0 diyelim. Bu durumda,

E¤er A[i] ve B[j] ayn› de¤ilse: U(i, j) = 0 E¤er A[i] ve B[j] ayn› ise: U(i, j) = U(i-1, j-1) + 1.

Sorudaki örne¤imizi hat›rlayacak olursak, okadakabasakali

okabasaoka

dizgileri için flekildeki gibi U’yu gösteren bir tablo oluflturabiliriz (U(i, j), i nolu sütun ve j no-lu sat›r›n de¤eri).

Bu tabloyu s›rayla sat›r sat›r giderek olufltura-biliriz. Bizden istenen cevap, yani iki dizginin en uzun ortak alt dizgisinin uzunlu¤u, bu tablonun en büyük eleman›d›r (bizim örne¤imizde 6). Her-hangi A ve B için benzer bir tablo oluflturarak

çö-züme ulaflabiliriz.

Bellekten kazanmak için tablonun tamam›n› tutmay›z. Sadece tek sat›r bilgi tutmak yeterlidir.

Yaz› 2

Bu soruda da ilk soruda kulland›¤›m›z gibi dinamik programlama kullanarak ve benzer bir çözüm yolu izleyerek sonuca ulaflabiliriz.

0 ≤ i≤ m, 0 ≤ j ≤ n, 0 ≤ k ≤ p, 0 ≤ l ≤ q diyelim. A[i, j] birinci dikdörtgenin i’inci sat›r ve j’inci sütunundaki karakter, B[k, l] ikinci dikdörtgenin k’›nc› sat›r ve l’inci sütunundaki karakter olsun.

E¤er i=0 veya j=0 veya k=0 veya l=0 veya A[i, j]≠ B[k, l] ise U(i, j, k, l) = 0,

Di¤er durumlarda U(i, j, k, l) = min{U(i, j-1, k, l-1), U(i-1, j, k-1, l), U(i-1, j-1, k-1, l-1)} + 1 diyebiliriz. 4 boyutlu U tablosunu oluflturursak, bu tablonun en büyük eleman› bizi sorunun cevab›na ulaflt›r›r.

Bellekten kazanmak için U tablosunun tamam›n› tutmay›z. 3 boyutlu bir U tablosu yeterli olacakt›r.

Geçen Say›m›zdaki Sorular›n Çözümleri

103

Ekim 2005 B‹L‹MveTEKN‹K

Referanslar

Benzer Belgeler

12.. ‹lk terimi 4 ve ortak fark› 2 olan aritmetik dizinin 12.. 10 ve 20 say›lar› aras›na aritmetik dizi olacak flekilde dört say› yerlefltiriliyor.. Bir geometrik dizide

Klinigimizde daha önce AcrySof MA60BM grubu- nun ortalama 15 +/- 3 ay ve DR.SCHMIDT MCTE gru- bunun ortalama 13 +/- 2 ay takip sonras› karfl›laflt›r›ld›k- lar›

 as CS rates increase, up to a certain threshold, maternal, neonatal and infant mortality decrease.  above this threshold, the association no longer exists and further increases

Afla¤›daki kareköklü say›lar›n eflitlerini yaz›n›z. Afla¤›daki ifllemleri yap›n›z.. Afla¤›daki ifllemleri yap›n›z. Afla¤›daki s›ralamalardan hangileri

E¤er bu yolun iki ucundaki flehir ayn› kümede de¤il ise bu yolu k›rm›z›ya boya- yal›m ve bu iki uçtaki flehirlerin kümelerini birlefltirelim.. Bu ifllemi bütün

Bu tamsay›lardan birincisi ve ikincisi yolun hangi flehri hangi flehre ba¤lad›¤›n›, üçüncüsü ise yolun uzunlu- ¤unu ifade edecektir.. • Takip eden sat›rda daha

Hayat›n› ce- birsel eflitliklere ve say›lar teorisine adam›fl bu büyük matematikçinin birçok kitab› bulu- nuyor.Cebirle ilgili 130 tane matematik problemini bar›nd›ran

Ge- çen say›da anlatt›¤›m›z Fibonacci say›lar› ve alt›n oran, bu birlikteli¤in en güzel görülebil- di¤i konular›n bafl›nda geliyor!. Bu ayki konumuz ise alt›n