Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

pinio27

Problematyczne pytania

Polecane posty

Mam dwa takie pytania:

1.Co jest źródłem danych dla algorytmu zapisanego w postaci funkcji w wybranym języku

programowania ?

2.Jaki jest czas życia zmiennej alokowanej dynamicznie (od jakiego momentu do jakiego) ?

Jakoś nie mogę uzyskać jednoznacznych odpowiedzi na te pytania w moich notatkach.

Przepraszam, że zaśmiecam forum takimi pierdołami, ale mam jeszcze 40 pytań tego typu i nie wyrabiam już :confused:

Z góry dziekuje za pomoc :blush:

Link do komentarza
Udostępnij na innych stronach

1. Pytanie trochę niejasne, ale w moim jego rozumieniu powiedziałbym, że chodzi o zmienne / obiekty globalne oraz o te przekazywane w parametrach do funkcji. Na dobrą sprawę mogą to być też obiekty lokalne, należące tylko do algorytmu, ale nie przekazywane w żaden sposób.

2. Pytanie w sumie jest niedokładne, bo zmienną można stworzyć wcześniej, a pamięć zaalokować później. Koniec życia zmiennej też jest niejednoznaczny, bo zależy od języka. W C# czy javie jest proces maszyny wirtualnej zwany garbage collector, który czyści pamięć z już zbędnych obiektów. W językach, które nie mają takiego mechanizmu, pamięć musi być zwolniona przez programistę. Jeśli tego nie zrobi, następuje tzw. wyciek pamięci, co jest oczywiście niepożądane.

Link do komentarza
Udostępnij na innych stronach

Ad 1 - Skoro algorytm jest w formie funkcji, to źródłem danych mogą być:

1) dane globalne

2) parametry wywołania

3) pliki

4) dane zwracane przez inne funkcje

5) wartości zdefiniowane dyrektywą #define

6) losowo wybrane obszary pamięci

7) urządzenia

Nic więcej nie przychodzi mi do głowy.

Ad 2 - Od momentu alokacji do momentu dealokacji. Czyli zmienna "żyje" pomiędzy parą malloc/free, lub new/delete.

Link do komentarza
Udostępnij na innych stronach

Problematycznych pytań ciąg dalszy :huh: :

1.Na czym polegają metody systematyczne usprawniania algorytmów o dużej złożoności obliczeniowej??

2.Jaka jest rola, i kiedy się używa, zmiennych wskaźnikowych ?

Pytania dotyczą tematu algorytmy i złożoność w języku c++

Link do komentarza
Udostępnij na innych stronach

Ad 1 - Eee ? Systematyczne metody ?

Za pwn: "prowadzony w sposób uporządkowany, według pewnego systemu; też: o efektach takich działań; planowy, metodyczny" Jeżeli istnieje jakikolwiek planowy zestaw metod pozwalający usprawnić dowolny algorytm o dużej złożoności, to ja domagam się odszkodowania od mojej uczelni.

Nie mam pojęcia o co chodziło autorowi pytania. Może o jakąś bzdurę typu rozwijanie pętli ?

Wydaje mi się, że każdy algorytm jest inny i nie za bardzo można do nich podchodzić w jakiś uniwersalny sposób.

Ad 2 - Generalnie wskaźników używa się kiedy istotny jest adres zmiennej, a nie jej wartość.

a) Kiedy chcemy przekazać coś dużego, np tablice 1024 int'ów, do funkcji

b) Kiedy funkcja musi operować na tej samej kopii zmiennej co wywołujący (choć tu często lepiej użyć referencji)

c) Kiedy funkcja ma stworzyć nowy obiekt, używa się podwójnego wskaźnika (bool create(type ** instance) )

d) Do bezpośredniego grzebania w pamięci

Taka jeszcze uwaga. Tablica jest wskaźnikiem. Kiedyś nawet na ten temat dyskutowaliśmy z wies.niakiem.

Generalnie dla

int tab[16];

tab jest mniej więcej czymś takim

const int const * tab = sp + offset

Oczywiście kompilator uwzględnia rozmiar tablicy przy tworzeniu ramki na stosie.

Link do komentarza
Udostępnij na innych stronach

Ja też nie wiem o co chodziło mojemu wykładowcy odnośnie tych metod systematycznych...

Dał nam pełno materiałów ale niestety zero w nich jednoznacznych odpowiedzi :unsure:

To znalazłem w notatkach odnosnie metod systematycznych:

Metody systematyczne

Cecha charakterystyczna metod systematycznych jest

pewnosc. Ich stosowanie nie wpływa na jakosc algorytmu, w

szczególnosci: nie zmniejsza szans na znalezienie

rozwiazania, w niczym nie ogranicza ilosci rozwiazan, czy ich

dokładnosci.

Istnieje bardzo duo rónego rodzaju metod usprawniania

algorytmów w sposób systematyczny. Prawie zawsze zalea

on od specyfiki rozwiazywanego problemu. W niniejszym

rozdziale omówimy trzy najczesciej spotykane metody...

Link do komentarza
Udostępnij na innych stronach

pinio27 << Oj raczej źle. Wydaje mi się, że albo korzeń ma 1, albo najbardziej lewy liść.

Czyli albo zamień 4 z 5, albo

4 > 1

3 > 2

2 > 3

1 > 4

Nie wiem, który z wariantów jest inorder (zwróćcie uwagę, że poprawnie jest "in order"), także to musisz sobie sprawdzić.

Ad metody - no tak, mogłem się domyślić. Czyli jednak quicksorta sobie nie usprawnię ;) Za to wiemy co trzeba napisać w odpowiedzi. Wymienić te metody i je opisać. Może nawet przykład zastosowania podać.

wies.niak << :)

Link do komentarza
Udostępnij na innych stronach

To znaczy mi sie wydaje ze tylko trzeba zamienić 4 z 5 i będzie dobrze :thumbsup:

A co do tych metod to nie wiem czy jest potrzeba opisywania ich wszystkich czy nie wystarczy jak napisze ogólnie czyli tak:

Cecha charakterystyczna metod systematycznych jest

pewnosc. Ich stosowanie nie wpływa na jakosc algorytmu, w

szczególnosci: nie zmniejsza szans na znalezienie

rozwiazania, w niczym nie ogranicza ilosci rozwiazan, czy ich dokładności.

??

Link do komentarza
Udostępnij na innych stronach

Z metodami systematycznymi chyba chodzi o porównanie systematyczne vs heurystyczne i dotyczy PROBLEMÓW o dużej złożoności (np. NP-trudnych). Tyle mi się kojarzy z wykładów, ale że miałem je dawno... Nie mam teraz czasu poszukać konkretów ;)

Co do przeszukiwania drzewa to musisz zamienić 4 i 5. Ogólnie zasada in order to - lewo środek prawo (jak system surround :D) jedziesz najbardziej jak się da w lewo, cofasz się o jeden, jedziesz jeden w prawo i znów najbardziej jak się da w lewo.

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...