Forum Informatyka UJ forum Strona Główna Informatyka UJ forum
Rocznik 2005 - czyli najlepsze forum w sieci
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Zadanie N* - Fabryka
Idź do strony Poprzedni  1, 2, 3  Następny
 
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Algorytmy i Struktury Danych
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Skrobocik
[SKROBORANGA]



Dołączył: 29 Lis 2005
Posty: 2958
Przeczytał: 0 tematów

Skąd: Skarżysko , Kraków

PostWysłany: Śro 4:10, 15 Lis 2006    Temat postu:

Jak coś, to kolejna binarka do testowania: [link widoczny dla zalogowanych] plik N.exe

Kurczę, implementacja tego jest prościutka jak już się załapie, ale i tak złapałem jedno RTE :?

Jeszcze mam pytanko do Rogalika: jak to zrobiłeś, że Twoja binarka zajmuje tylko 17,5k moja aż 465,3k. Czy to jakieś opcje kompilacji, czy inne kosmosy :?:
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Śro 4:33, 15 Lis 2006    Temat postu:

cct napisał:
Yup, ale argument pod logarytmem jest de facto rzędu [zakres danych] dużo mniejszego niż czynnik liniowy, więc to O sugeruje co najwyżej zbicie lekkie współczynnika.


Nie rozumiem tego zdania ni z zab szczerze mowiac (;)) Mowisz o zlozonosci w notacji O duze i o wspolczynniku jakims (wnioskuje ze chodzi o stala) a te dwie rzeczy sie maja do siebie jak nie przymierzajc piernik do wiatraka ;) To samo tyczy sie zakresu danych - przy analizie zlozonosci nie ma czegos takiego, bo to wszystko rozpatruje sie w lim -> oo

cct napisał:
[BTW nie chce mi się teraz szukać, ale jeśli dobrze pamiętam, to to jednak nawet formalnie chyba jest to notacja Th ( k*lg(b) ), bo istnieją takie m i n, że m*k*lg(b) <= n*k*lg(b) <= n*k*lg(b); w tym przypadku: m = 1/lg(10000), n = 10000: oba niezalezne od glownego argumentu, czyli k, ktore nie dosc, ze ma duzo wieksze limity, ale i w wyzszej 'potedze' jest ].


Tego tez do konca nie czaje (pozna godzina :P) ale te Twoje stale opieraja sie o zakres danych. A jak zaczniemy liczyc zlozonosc w skonczonych przedzialach |N, to nam wyjdzie ze wszystko dziala w czasie stalym (na oko O(maxint) ;))

Ogolem odnosnie reszty Twojej wypowiedzi: ten algorytm nie jest theta, bo zeby byc theta(f(n)) to trzeba byc jednoczesnie O(f(n)) i Omega(f(n)). A ten algos niewatpliwie nie jest Omega(k*(logb+loga)) bo istnieja przypadki dla ktorych dziala w czasie liniowym wzgledem wartosci k (tak samo jak qsort nie jest O(n log n) bo w pes dziala n^2). Mam nadzieje ze to Cie przekona :]
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Rogal
Zjeb z kaszanką



Dołączył: 13 Mar 2006
Posty: 1745
Przeczytał: 0 tematów

Skąd: koło podbiegunowe

PostWysłany: Śro 8:36, 15 Lis 2006    Temat postu:

Skrobocik napisał:
Jeszcze mam pytanko do Rogalika: jak to zrobiłeś, że Twoja binarka zajmuje tylko 17,5k moja aż 465,3k. Czy to jakieś opcje kompilacji, czy inne kosmosy :?:

Prawdopodobnie używasz #include <iostream>
Ta biblioteka wrzuca do kodu wykonywalnego mnóstwo różnych rzeczy, których raczej nigdy nie potrzebuję, więc używam cstdio.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
paladin
[świeżak]



Dołączył: 19 Paź 2006
Posty: 8
Przeczytał: 0 tematów

Skąd: TCS, obawiam się :)

PostWysłany: Śro 14:30, 15 Lis 2006    Temat postu:

hansu napisał:

Ogolem odnosnie reszty Twojej wypowiedzi: ten algorytm nie jest theta, bo zeby byc theta(f(n)) to trzeba byc jednoczesnie O(f(n)) i Omega(f(n)). A ten algos niewatpliwie nie jest Omega(k*(logb+loga)) bo istnieja przypadki dla ktorych dziala w czasie liniowym wzgledem wartosci k (tak samo jak qsort nie jest O(n log n) bo w pes dziala n^2). Mam nadzieje ze to Cie przekona :]


Łatwo pomylić dwie różne rzeczy: złożoność dotyczy algorytmów, natomiast notacja O/Omega/Theta funkcji. Trzeba zawsze najpierw ustalić, o której funkcji złożoności (pesymistycznej/średniej/dla konkretnych danych) mówimy, dopiero potem ją szacować. Stwierdzenie "ten algorytm jest Theta(n^2)" można rozumieć jako "algorytm jest na każdych danych Theta(n^2)" lub "pesymistycznie Theta(n^2)", przy czym wygodniej stosować drugą konwencję (rzadko algorytm zachowuje się zawsze tak samo, pierwsza byłaby mało użyteczna). Myślę, że stosujecie Panowie dokładnie te dwie różne interpretacje.

A w quicksorcie chodzi o coś jeszcze innego - złożoność średnią. Średnia funkcja złożoności jest jak najbardziej O(n log n).

(tak w ogóle to pozdrawiam, przepraszam, jeśli nagłe wtargnięcie na Państwa forum kogoś oburzyło ;-) )
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Skrobocik
[SKROBORANGA]



Dołączył: 29 Lis 2005
Posty: 2958
Przeczytał: 0 tematów

Skąd: Skarżysko , Kraków

PostWysłany: Śro 15:36, 15 Lis 2006    Temat postu:

Rogal napisał:
Skrobocik napisał:
Jeszcze mam pytanko do Rogalika: jak to zrobiłeś, że Twoja binarka zajmuje tylko 17,5k moja aż 465,3k. Czy to jakieś opcje kompilacji, czy inne kosmosy :?:

Prawdopodobnie używasz #include <iostream>
Ta biblioteka wrzuca do kodu wykonywalnego mnóstwo różnych rzeczy, których raczej nigdy nie potrzebuję, więc używam cstdio.

A rzeczywiście, ale i tak zajmuje trzy razy więcej, bo 47k, ale to już pewnie jakieś Twoje mega rozkminki nad algorytmem mistrzuniu ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
kg86
zielony żul



Dołączył: 22 Gru 2005
Posty: 1194
Przeczytał: 0 tematów

Skąd: pochodze?

PostWysłany: Śro 16:34, 15 Lis 2006    Temat postu:

dzieki rogal :) dzieki Twojej binarce znalazlem blad - troche nie poprawnie zerowalem jedna tablice ;) jednak moj algorytm byl poprawny :D :D :D
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Spectro
Mistrz grilla



Dołączył: 09 Mar 2006
Posty: 2306
Przeczytał: 0 tematów

Skąd: Kurdwanów

PostWysłany: Czw 17:27, 16 Lis 2006    Temat postu:

Heh, też dzięki za binarkę - myliłem numery indeksów z wartościami tablicy dla B. Oczywiście ani test próbny, ani moje własne nie wykryły nieprawidłowości w działaniu programu ;] .

Używajcie build_heapa, zamiast inserta - mi pomogło z TLE (pierwszy u mnie komunikat inny niż OK czy ANS z ASD2).
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fidel
żul



Dołączył: 19 Lis 2005
Posty: 649
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Czw 19:31, 16 Lis 2006    Temat postu:

Spectro napisał:
Heh, też dzięki za binarkę - myliłem numery indeksów z wartościami tablicy dla B. Oczywiście ani test próbny, ani moje własne nie wykryły nieprawidłowości w działaniu programu ;] .

Używajcie build_heapa, zamiast inserta - mi pomogło z TLE (pierwszy u mnie komunikat inny niż OK czy ANS z ASD2).

nie wiem czym jest u ciebie insert ale jesli przesiewasz w gore przy kazdej wczytanej danej to przechodzi i raczej przez cos innego masz TLE
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Skrobocik
[SKROBORANGA]



Dołączył: 29 Lis 2005
Posty: 2958
Przeczytał: 0 tematów

Skąd: Skarżysko , Kraków

PostWysłany: Czw 19:32, 16 Lis 2006    Temat postu:

Spectro napisał:
(...) Używajcie build_heapa, zamiast inserta - mi pomogło z TLE (pierwszy u mnie komunikat inny niż OK czy ANS z ASD2).

Ale lamka jesteś Spectro ;)

EDIT:
Fidel napisał:
(...) nie wiem czym jest u ciebie insert ale jesli przesiewasz w gore przy kazdej wczytanej danej to przechodzi i raczej przez cos innego masz TLE

Może nadpisywał od przodu i przesuwał wszystko o jeden za każdym razem :D
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Spectro
Mistrz grilla



Dołączył: 09 Mar 2006
Posty: 2306
Przeczytał: 0 tematów

Skąd: Kurdwanów

PostWysłany: Czw 20:46, 16 Lis 2006    Temat postu:

build_heap jest liniowy, a n insertów to nlogn :P . Przesiewanie w górę? Ja miałem cały czas przesiewanie w dół ;] .

No, miałem jeszcze błąd z za małą tablicą, ale to by raczej ANS wyskoczył, a nie TLE ;) .
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fidel
żul



Dołączył: 19 Lis 2005
Posty: 649
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Czw 21:25, 16 Lis 2006    Temat postu:

Spectro napisał:
build_heap jest liniowy, a n insertów to nlogn :P

to co? mi przeszlo :P
Spectro napisał:
Przesiewanie w górę? Ja miałem cały czas przesiewanie w dół ;] .
jakos tego nie widze, chyba ze tak jak mowi Skrobocik :D
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Spectro
Mistrz grilla



Dołączył: 09 Mar 2006
Posty: 2306
Przeczytał: 0 tematów

Skąd: Kurdwanów

PostWysłany: Czw 22:06, 16 Lis 2006    Temat postu:

Fidel napisał:
to co? mi przeszlo

A mi nie :mrgreen: .

Jak się zwiększa element na szczycie kopca, to trzeba go przesiać potem w dół, nie? :P
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fidel
żul



Dołączył: 19 Lis 2005
Posty: 649
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Czw 22:23, 16 Lis 2006    Temat postu:

Spectro napisał:
Fidel napisał:
to co? mi przeszlo

A mi nie :mrgreen: .

Jak się zwiększa element na szczycie kopca, to trzeba go przesiać potem w dół, nie? :P
powiesz mi jutro bo ja jakies warzywo jestem po analu :}
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Skrobocik
[SKROBORANGA]



Dołączył: 29 Lis 2005
Posty: 2958
Przeczytał: 0 tematów

Skąd: Skarżysko , Kraków

PostWysłany: Czw 22:28, 16 Lis 2006    Temat postu:

Spectro napisał:
Fidel napisał:
to co? mi przeszlo

A mi nie :mrgreen: .

Jak się zwiększa element na szczycie kopca, to trzeba go przesiać potem w dół, nie? :P

Wg mnie Fidel pisał o tym upHeap'ie, bo Ty wspomniałeś o tym, by nie robić inserta za każdym włożeniem, tylko makeHeap'a po wczytaniu danych. Przy insercie trzeba przecież robić upHeap'a, bo wczytywane nowe elementy dodajesz na koniec tablicy, więc jeśli przypadkowo byłby to element o najmniejszej wartości, to trzeba go jakoś dziabnąć na początek ;)

Więc jesli robi się inserta, to trzeba jeszcze dodatkowo zrobić upHeap'a, co zresztą wcale nie jest jakąś wielką filozofią, to banał przecież. A przy wersji z makeHeap'em wystarczy downHeap tylko, bo make też z nim działa.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fidel
żul



Dołączył: 19 Lis 2005
Posty: 649
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Czw 23:35, 16 Lis 2006    Temat postu:

ale w drugim przypadku masz mniejsza zlozonosc bo downHeapow robisz nie n tylko chyba n/2 albo jakos tak :}
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Spectro
Mistrz grilla



Dołączył: 09 Mar 2006
Posty: 2306
Przeczytał: 0 tematów

Skąd: Kurdwanów

PostWysłany: Czw 23:41, 16 Lis 2006    Temat postu:

Tak, n/2 downheapów, do tego jeszcze amortyzuje się ;) . Biorąc pod uwagę limity czasowe w tym zadaniu, każde udoskonalenie na redukcję stałej może okazać się kluczowe.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Czw 23:59, 16 Lis 2006    Temat postu:

Zgodze sie ze Spectrem - dostalem TLE mimo ze moje rozwiazanie bylo zlozonosciowo dobre, po czym zmienilem konstrukcje kopca, odarlem go z calej obiektowosci, wywalilem operatory inline i przeszlo. Jednym slowem w tym zadaniu trzeba uwazac na stala...
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
cct
pijak



Dołączył: 21 Mar 2006
Posty: 202
Przeczytał: 0 tematów


PostWysłany: Pią 0:29, 17 Lis 2006    Temat postu:

paladin napisał:
hansu napisał:

Ogolem odnosnie reszty Twojej wypowiedzi: ten algorytm nie jest theta, bo zeby byc theta(f(n)) to trzeba byc jednoczesnie O(f(n)) i Omega(f(n)). A ten algos niewatpliwie nie jest Omega(k*(logb+loga)) bo istnieja przypadki dla ktorych dziala w czasie liniowym wzgledem wartosci k (tak samo jak qsort nie jest O(n log n) bo w pes dziala n^2). Mam nadzieje ze to Cie przekona :]


Łatwo pomylić dwie różne rzeczy: złożoność dotyczy algorytmów, natomiast notacja O/Omega/Theta funkcji. Trzeba zawsze najpierw ustalić, o której funkcji złożoności (pesymistycznej/średniej/dla konkretnych danych) mówimy, dopiero potem ją szacować. Stwierdzenie "ten algorytm jest Theta(n^2)" można rozumieć jako "algorytm jest na każdych danych Theta(n^2)" lub "pesymistycznie Theta(n^2)", przy czym wygodniej stosować drugą konwencję (rzadko algorytm zachowuje się zawsze tak samo, pierwsza byłaby mało użyteczna). Myślę, że stosujecie Panowie dokładnie te dwie różne interpretacje.


More or less. Statystycznie pewnie dałoby się obliczyć oczekiwaną ilość porównać przy każdym przesiewaniu (zależnie od tego, jak by się rozkładała długość obrabiania modułów, bo najczęściej - i przez najmniejszą wysokość - będzie przesiewany najkrócej działający etc.), ale zasadniczo, to nadal różnych danych mogą się różne rzeczy dziać.

@hansu: Nie mówiąc już o tym, że patrzę na to zadanie skrzywiony mocno po mojej pierwszej implementacji, która była asymptyczynie taka sama (niezależnie czy mówimy o O czy Th), ale przez robienie wszystkiego na insercie/delecie zawsze przesiewała od góry i od dołu dwa elementy, które łącznie miały - tak intuicyjnie - wysokość przesiewania zbliżoną całej wysokości, i działała zdecydowanie w czymś zbliżonym do pesymistycznego ;/

No i w sumie pytanie jest, jak szybko przy ustalonej fabryce przemieli nam jakąś tam zadaną ilość elementów. Funkcja opisująca zożoność chyba zasadniczo powinna być jednoargumentowa, ale często realne wyobrażenie daje nam dopiero więcej argumentowa (np. grafy). Dlatego te liczenia przy M wrzucające w nią np. liczbę odpowiedzi chyba TCSowców o zawał muszą przyprawiać ;))

Popadając w jedną skrajność liczymy więc tylko funkcje od elementów, w drugą - liczymy też liczbę typów maszyn przez które przechodzi element ;)) (taki lekki joke)

No i przy n -> oo i tak wartosc nawet logarytmu iterowanego jest oo, wiec wszystko wychodzi i tak na jedno ;))

@późniejszy post Hansa: nie trzeba odzierać kopca z obiektowości, tylko udostępnić w nim publiczną funkcyjkę która robi to, co Ty chcesz zrobić na otwartych bebechach ;) Zwł. że używać można dwóch identycznych kopców, więc szkoda byłoby powtarzać kod.

@spectro: tworzenie kopca działa Ci w a*lg(a), więc dużo nie zyskasz na nim - grunt to pętla główna, ale w sumie przyznam się, że o tym nie pomyślałem ;)

paladin napisał:
(tak w ogóle to pozdrawiam, przepraszam, jeśli nagłe wtargnięcie na Państwa forum kogoś oburzyło ;-) )


Również pozdrawiamy, co bynajmniej nie powinno dać złudnego wrażenia, żeśmy święcie nieoburzeni ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Pią 1:54, 17 Lis 2006    Temat postu:

cct napisał:
@późniejszy post Hansa:


Grrrrr po raz n+1-wszy.....

cct napisał:
nie trzeba odzierać kopca z obiektowości, tylko udostępnić w nim publiczną funkcyjkę która robi to, co Ty chcesz zrobić na otwartych bebechach ;) Zwł. że używać można dwóch identycznych kopców, więc szkoda byłoby powtarzać kod.


Mowiac o obdzieraniu z obiektowosci mialem na mysli to ze upubliczniamy rzeczy, ktore nie powinny byc publiczne, tj dajemy na zewnatrz dostep do heapdowna i calych flakow - przynajmniej ja tak zrobilem. Mimo to nadal moj kod opiera sie na klasach...

cct napisał:
@spectro: tworzenie kopca działa Ci w a*lg(a), więc dużo nie zyskasz na nim - grunt to pętla główna, ale w sumie przyznam się, że o tym nie pomyślałem ;)


A tu sie akurat mylisz bo tworzenie kopca o rozmiarze n jesli liniowe, a nie n log n. Jak to zrobic? Wrzucasz wszystko jak leci do tablicy i odpalasz:
Kod:

for i = n/2 downto 1
heapdown(i);


Dlaczego to jest liniowe? Otoz dlatego ze wykonuje sie n/4 przesian w dol o dlugosci max 2, n/8 przesian o dlugosci 3 itd Czyli mamy sume szeregu:
Kod:
i * n/(2^i)

a to jak nietrudno policzyc wynosi (chyba - licze w pamieci ;)) 3/2 n
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
cct
pijak



Dołączył: 21 Mar 2006
Posty: 202
Przeczytał: 0 tematów


PostWysłany: Pią 2:23, 17 Lis 2006    Temat postu:

hansu napisał:
cct napisał:
@późniejszy post Hansa:


Grrrrr po raz n+1-wszy.....


Ups ;)

Mea culpa, kajam się. Zwł, że mnie też podobna pisownia niekiedy irytuje, więc powiniem to respektować bardziej.

hansu napisał:
Mowiac o obdzieraniu z obiektowosci mialem na mysli to ze upubliczniamy rzeczy, ktore nie powinny byc publiczne, tj dajemy na zewnatrz dostep do heapdowna i calych flakow - przynajmniej ja tak zrobilem. Mimo to nadal moj kod opiera sie na klasach...


Kod:
// w klasie kopca
public:
  long updateuj(){
     ...
     jakisHeap( ... ) ;
     ...
     return ...
  } // update'a

i tyle.

hansu napisał:
cct napisał:
@spectro: tworzenie kopca działa Ci w a*lg(a), więc dużo nie zyskasz na nim - grunt to pętla główna, ale w sumie przyznam się, że o tym nie pomyślałem ;)


A tu sie akurat mylisz bo tworzenie kopca o rozmiarze n jesli liniowe, a nie n log n.


Wiem, był dowód u Ślusarka i wspomniane nawet na ASD2. Skrót myślowy - "[w tworzeniu przez insert] tworzenie kopca działa Ci w a*lg(a), więc dużo nie zyskasz na nim [robiąc liniowe]". Chodz mii o to, że kopiec i tak nie jest duży - niemniej optymalizacja jest słuszna.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Prezioso
pijak



Dołączył: 18 Lis 2005
Posty: 100
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Pon 15:40, 20 Lis 2006    Temat postu:

Przybliżyłby ktoś ideę algorytmu?? Tak trochę przynajmniej :)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fidel
żul



Dołączył: 19 Lis 2005
Posty: 649
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Pon 21:26, 20 Lis 2006    Temat postu:

mowisz masz.

tak w skrocie to zadanie polega na napisaniu kopca min ;) a nie w skrocie:

pierwsze ulatwienie, to zauwazenie ze mozna najpierw policzyc czasy przetwarzania dla maszyn A a dopiero potem dla maszyn B tylko obliczanie dla A odbywa sie od 1..n a dla B n..1

idea przetwarzania polega na tym aby kolejne elementy wkladac do maszyn ktore najwczesniej skoncza prace. czyli na przyklad mamy maszyny o szybkosciach 2 3 6 wtedy dla kolejnych elementow uzyjemy maszyn 1 2 1 1 2 3

dlaczego? bo przetwarzajac pierwszy element pierwsza maszyna dostaniemy gotowy po czasie 2 wtedy drugi mozemy przetworzyc druga maszyna i dostaniemy go po czasie 3 ale nastepny najlepiej przetworzyc znowu pierwsza maszyna bo dostaniemy go po czasie 4 (2 na pierwszy drugie 2 na trzeci element) itd itd

a jak to zrobic algorytmicznie? tworzymy sobie kopiec dla maszyn w ktorym wartosciami beda czasy skonczenia pracy
dla maszyn ktore podalem wczesniej to bedzie 2 3 6

teraz przetwarzajac element oprocz wyliczenia czasu przetworzenia danego elementu w tablicy wynikow uaktualniamy kopiec czyli szczyt kopca zwiekszamy o szybkosc dzialania maszyny ktora jest na szczycie i przesiewamy kopiec w dol zeby zachowac warunek kopca min

czyli w tamtym przykladzie uzywamy kopca pierwszego i uaktualniamy kopiec, co daje 3 4 6 po drugim 4 6 6 po trzecim 6 6 6 itd

gdy obliczymy cala tablice wynikow przetworzenia dla maszyn A liczymy juz na tej tablicy tylko od tylu kopcem B i uaktualniamy wyniki, jak nie trudno sie domyslic wynikiem dla zestawu jest element maksymalny naszej tablicy wynikow

nie czytalem tego co napisalem, mam nadzieje ze da sie to zrozumiec ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fen
zielony żul



Dołączył: 22 Lut 2006
Posty: 946
Przeczytał: 0 tematów

Skąd: Bochnia

PostWysłany: Pon 22:19, 20 Lis 2006    Temat postu:

dzienki Fidel

na pewno pomoc się przyda
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Prezioso
pijak



Dołączył: 18 Lis 2005
Posty: 100
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Wto 17:47, 21 Lis 2006    Temat postu:

Fidel napisał:


pierwsze ulatwienie, to zauwazenie ze mozna najpierw policzyc czasy przetwarzania dla maszyn A a dopiero potem dla maszyn B tylko obliczanie dla A odbywa sie od 1..n a dla B n..1

...

gdy obliczymy cala tablice wynikow przetworzenia dla maszyn A liczymy juz na tej tablicy tylko od tylu kopcem B i uaktualniamy wyniki


co to znaczy od tyłu dokładnie ??

np. dla pierwszego testu:

2
2 3
2
2 3
7

po przetworzeniu przez A mamy tablice 2 3 4 6 6 8 9 ... i zaczynmy pozniej od 2 itd...
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
dzendras
Germański oprawca



Dołączył: 07 Mar 2006
Posty: 1326
Przeczytał: 0 tematów

Skąd: Chorzów

PostWysłany: Wto 18:02, 21 Lis 2006    Temat postu:

to znaczy, że gdy przy maszynach typu A, rozważałeś elementy(półprodukty) od 1 do n, to dla kopca B bierzesz kolejne elementy od n do 1.
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Algorytmy i Struktury Danych Wszystkie czasy w strefie EET (Europa)
Idź do strony Poprzedni  1, 2, 3  Następny
Strona 2 z 3

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin