Zadanie 1: Stopa Autor: dr Krzysztof Nowiński Zbiór danych stopa.dat (do ściągnięcia stąd: http://www.icm.edu.pl/~bolo/kfnrd2013/know/) zawiera tomogram komputerowy stopy człowieka. Dane są zawarte w kostce 137x356x170 voxeli (1voxel 1 byte) uszeregowanych w kolejności (0,0,0)...(136, 0, 0), (0,1,0)...(136, 1, 0),......(136,355, 0), (0,0,1)...............(136,355,169). voxele o wartości >0 to voxele stopy (kości, mięśnie, skóra), voxele o wartości > 70 to voxele kości. Należy znaleźć dwie płaszczyzny: płaszczyznę PS podparcia stopy, czyli płaszczyznę taką, że: 1. PS jest niemal pozioma 2. wszystkie woxele stopy leżą powyżej PS 3. odległość PS od dolnej ściany kostki jest możliwie największa patrz rysunek: płaszczyznę PK analogiczną do PS, ale podpierającą kości stopy:
Rozwiązanie zadania powinno obejmować: 1. położenia płaszczyzn PS i PK (równanie płaszczyzny i współrzędne 3 punktów podparcia) 2. opis algorytmu szukania płaszczyzny 3. program wykorzystany do znalezienia płaszczyzny (C lub chętniej Java) Zadanie 2: Drzewo genealogiczne języków Autor: dr Łukasz Bolikowski Celem zadania jest odtworzenie drzewa genealogicznego języków należących do wybranej rodziny językowej. Zadanie składa się z trzech części. Część 1: Zaproponuj własną, lub opracuj na podstawie literatury (słowa kluczowe: n- gram, language identification), funkcję double langsimilarity(string, string), która dla danej pary tekstów zwróci ich "podobieństwo językowe" wyrażone liczbą rzeczywistą z przedziału [0, 1]. Funkcja powinna zwracać wysokie wartości gdy oba teksty napisane są w tym samym lub podobnym języku, a niskie w przeciwnym wypadku. Część 2: Zaproponuj własną, lub opracuj na podstawie literatury (słowa kluczowe: phylogenetic tree, hierarchical clustering), funkcję tree reconstructtree(string[] ), która dla danego zbioru tekstów zbuduje drzewo (ukrzenione lub nieukorzenione, niekoniecznie binarne). Liśćmi drzewa powinny być podane teksty. Odległość między daną parą liści w wynikowym drzewie (długość najkrótszej ścieżki w drzewie łączącej oba liście) powinna być tym mniejsza, im większe jest podobieństwo odpowiadających tekstów.
Część 3: Zaimplementuj funkcje opracowane w poprzednich częściach i przygotuj dane wejściowe: co najmniej 15-20 odpowiednio długich tekstów w różnych językach. Uruchom algorytm dla przygotowanych danych. Przedyskutuj wyniki. Rozwiązanie zadania powinno składać się z opisu funkcji zaproponowanych w pierwszych dwu częściach, prezentacji wynikowego drzewa oraz krótkiej analizy uzyskanych wyników. Dodatkowe wskazówki. Do części pierwszej: zapoznaj się z dostępnym w sieci artykułem N-Gram-Based Text Categorization (William B. Cavnar, John M. Trenkle). Do części drugiej: zapoznaj się z algorytmem UPGMA. Dobrym źródłem długich tekstów w różnych językach są Wikiźródła, pod adresem: http://??.wikisource.org/ wiki/special:longpages, gdzie?? to kod języka, znajduje się lista najdłuższych dokumentów w danej edycji językowej. Krótszym tekstem, za to przetłumaczonym na bardzo wiele języków i dostępnym w UNICODE, jest Powszechna Deklaracja Praw Człowieka: http://unicode.org/udhr/index_by_name.html. Uwaga: Twórczość własna w pierwszych dwu częściach będzie bardzo mile widziana, ale nie jest niezbędna. Implementacja algorytmów znalezionych w sieci w zupełności wystarczy do "zaliczenia" zadania. Proszę skupić się wówczas na części trzeciej, tzn. "pobawić się" tekstami i algorytmami i opisać swoje obserwacje. Zadanie 3: Blisko i daleko, czyli szukanie dziwnych punktów Autor: dr Krzysztof Nowiński Wyobraźmy sobie płynnie ewoluujący obszar na płaszczyźnie na przykład wysychającą powoli lub rozlewającą się plamę wody na podłodze. Łatwo zauważyć, że mały fragment brzegu takiej plamy będzie na ogół przesuwać się nie zmieniając swojego kształtu mały kawałek konturu będzie gładką, przesuwającą się linią. Tu i ówdzie i od czasu do czasu można jednak zauważyć zmiany jakościowe mała izolowana plamka może się coraz szybciej kurczyć (zbliżając się przy tym kształtem do koła) aż wreszcie zniknie a czasem zauważymy, że przewężenie między dwoma fragmentami obszaru będzie się zwężać aż zobaczymy (lokalny) rozpad na dwa podobszary rozłączne. (Gdy plama powstaje, możemy oglądać zdarzenia odwrotne powstanie plamki z niczego lub połączenie dwóch obszarów przesmykiem.
Kontur obszaru możemy numerycznie zapisać jako linię, czyli ciąg punktów (xi, yi) i połączonych odcinkami (ik, jk), Ewolucję linii z kolei będzie można na ogół (patrz wyżej) opisać przemieszczeniami punktów (xi, yi)
Zmiany jakościowe wymagają już zmian w topologii połączeniach punktów. Wiemy, że zdarza się to rzadko, ale musimy być na takie niespodzianki przygotowani. Zniknięcie małego konturu można przewidzieć dość łatwo wystarczy sprawdzić, czy składowa konturu (zbiór punktów połączonych odcinkami w zamkniętą łamaną) zrobił się dostatecznie mały. Część 1: Czy można mając kontur zawierający n punktów szybko (algorytmem prostszym, niż O(n3), czyli takim, w którym ilość obliczeń rośnie wolniej, niż z sześcianem n) znależć pary punktów pk, pl takie, że: odległość d( pk, pl) jest mniejsza od zadanego r najkrótszy kawałek konturu łączący pk z pl jest dłuższy niż R (para pk, pl tworzy przewężenie, które będzie wymagało za chwilę lokalnej przebudowy listy odcinków). Część 2: Znależć analogi zdarzeń opisanych wyżej w ewolucji bryły np. ewolucji bryły topniejącego lodu. Zadanie 4: Sieć cytowań naukowych Mamy dany graf powiązań między artykułami naukowymi (cytowania). Jest to graf skierowany, w zasadzie acykliczny (cykle są niezwykle rzadkie i można je usunąć). Wybieramy węzeł początkowy (w praktyce artykuł, cytowany przez wiele innych artykułów (klasyk)). Skonstruuj, opisz i przedyskutuj algorytm, który wskaże ważne artykuły podobne do początkowego. Ważne w sensie wpływu na inne inne artykuły (ilość cytowań) oraz zgodności tematycznej z artykułem wyjściowym. Zaproponuj miarę ważności artykułu dla danej dziedziny. Pytanie pomocnicze: Jak ustalić, że para artykułów jest z tej samej dziedziny. Implementacja algorytmu nie jest wymagana, pomysły będzie można zrealizować w ramach warsztatów w ICM. W trakcie warsztatów zapewnimy dostęp do baz artykułów z cytowaniami.