Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Kombinatoryka - Silnia, Potęgowanie, Wariacje, Permutacje i kombinacje

matma inc biblioteka kombinatoryka

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
9 odpowiedzi w tym temacie

#1 wiwi249

    Wszechobecny

  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:440
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Tarnobrzeg
Offline

Napisano 29.03.2015 14:24

*
Popularny

Cześć!
Z racji małych nudów, chęci utrwalenia sobie wzorów oraz chęci odpracowania warna stworzyłem niewielki zbiór podstawowych funkcji z dziedziny kombinatoryki w matematyce.
Nie wiem czy komuś się przyda, ale mam nadzieję, że tak :D
Funkcje jakie znajdziemy w bibliotece:

  • Silnia
    _comb_factorial(num)
    
    num to liczba, której silnię chcemy obliczyć. Może to być tylko i wyłącznie naturalny int, jeśli jest to liczba mniejsza od 0, funkcja zwraca -1.
     
     
  • Potęga
    _comb_exponent(n, k)
    
    n - podstawa potęgi
    k - wykładnik potęgi
    n musi być liczbą całkowitą, a k liczbą naturalną.
    Zwraca -1, jeśli wykladnik jest mniejszy od zera.
    00 też da sie policzyć :D
     
  • Wariacja z powtórzeniami
    _comb_variation_r(k, n)
    
    Zwraca liczbę wszystkich k-wyrazowych ciągów elementów zbioru n-elementowego.
    k - liczba wyrazów w ciągu
    n - liczba elementów zbioru
    Zwraca -1, jeśli k lub n sa mniejsze od 1.
     
  • Wariacja bez powtórzeń
    _comb_variation(k, n)
    
    Zwraca liczbe wszystkich k-wyrazowych ciagow roznych elementow zbioru n-elementowego.
    k - ilosc wyrazow ciągu
    n - ilosc elementow zbioru
    Zwraca -1, jeśli k lub n sa mniejsze od 1 lub k jest wieksze od n
     
  • Permutacja bez powtórzeń
    _comb_permutation(n)
    
    Zwraca liczbę permutacji bez powtórzeń zbioru n-elementowego.
    n - ilość elementów zbioru
    Zwraca -1, jeśli n jest mniejszy od 0.
     
  • Kombinacja z powtórzeniami
    _comb_combination_r(k, n)
    
    Zwraca liczbe k-elementowych kombinacji z powtórzeniami zbioru n-elementowego
    n - liczba elementów zbioru
    k - liczba elementów kombinacji
    Zwraca -1, jeśli k jest mniejsze od 0 lub n jest mniejsze od 1 lub k jest wieksze od n
     
  • Kombinacja bez powtórzeń
    _comb_combination(k, n)
    
    Zwraca liczbe kombinacji z n po k
    n, k - parametry kombinacji wedlug definicji kombinacji w powyzszej kolejnosci
    Zwraca -1, jeśli k lub n sa mniejsze od 0 lub k jest wieksze od n.

     

Z czasem może będę aktualizował i ulepszał bibliotekę. Sprawdzałem ją, ale jeśli ktoś znajdzie jakieś błędy to śmiało piszcie.
Spodziewam się hejtów, ale może komuś się to kiedyś przyda :D
Pozdrawiam!

Załączone pliki


  • +
  • -
  • 7

Wykonuję strony internetowe, zlecenia AMXX i HLDS - w tym pisanie pluginów, ogarnianie serwerów, edycja i tworzenie modeli.

Potrzebujesz czegoś? Pisz!

 

"śpieszmy się pisać posty, tak szybko banują..." ~ sebul


#2 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 31.03.2015 14:56

a mogą być permutację z powtórzeniami?

Nie potrzebny jest warunek sprawdzający argument w permutacjach bo sprawdzasz go i tak w silni,

 

co do silni to są szybsze metody jej obliczania np metoda tablicowa która polega na zrobieniu statycznej tablicy x elementowej i wpisaniu do 1 elementu 1 a do każdego kolejnego index elementu * index elementu poprzedzającego potem tylko zwracasz wartość o podanym indeksie z tablicy


  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#3 wiwi249

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:440
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Tarnobrzeg
Offline

Napisano 31.03.2015 22:09

W sumie też dobra metoda z silnią. Może kiedyś spróbuję. Bardzo się różnią te metody w szybkości? W sumie to nie jest jakaś specjalnie wielka operacja, więc nie wiem czy różnica w wykonaniu funkcji będzie jakaś wielka. No ale zobaczymy, zastanowię się jeszcze i może się pojawi ta metoda ;)

Z warunkiem się zgodzę, zapomniałem potem wywalić.

Permutację z powtórzeniami zwyczajnie zapomniałem dodać, może się skuszę wkrótce na dodanie jej do biblioteki ;)


  • +
  • -
  • 0

Wykonuję strony internetowe, zlecenia AMXX i HLDS - w tym pisanie pluginów, ogarnianie serwerów, edycja i tworzenie modeli.

Potrzebujesz czegoś? Pisz!

 

"śpieszmy się pisać posty, tak szybko banują..." ~ sebul


#4 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 31.03.2015 22:45

nie ma czegos takiego jak permutacje z powtórzeniami xD

 

co do silni to dla małych liczb róznicy nie ma żadnej przy pojedyńczym wywołaniu zresztą też ale jesli mialbys wykonac cyklicznie więcej operacji to metoda tablicowa byla by szybsza bo bylo by to generowanie i potem tylko odczyt ewentualnie mozna generowac tablice wczesniej (cos na zasadzie rand i srand w C)


  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#5 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 31.03.2015 23:16


nie ma czegos takiego jak permutacje z powtórzeniami xD

 

Jest. Permutacja z powtórzeniami powstaje, gdy w ciągu który permutujemy mamy choć 1 parę nierozróżnialnych elementów, przykład: 1, 2, 2, 3, 4, 5, 6, 7, 8 - w tym ciągu mamy 2 dwójki więc zamieniając je ze sobą otrzymujemy nadal ten sam ciąg.


  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#6 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 31.03.2015 23:33

przykladowy kod

Spoiler

 

wyniki:
czas generowania <1 sekunda

czas wykonania 17 sekund

czas wykonania <1 sekunda

 

wnioski? dla cyklicznych operacji metoda tablicowa jest szybsza

 

tutaj test dla wywolania funkcji wypelnij_i_zwroc z kazdorazowym wypelnianiem tablicy

czas generowania <1 sekunda

czas wykonania 16 sekund

czas wykonania 36 sekund

 

wniosek? nie opłaca sie za kazdym razem generować tablicy dlatego tez nie oplaca się wykorzystywać tej metody w sytuacji gdy będziemy obliczać silnie raptem kilka razy

 

jeszcze test dla ultra duzych liczb czyli 1000x obliczenie silni z miliona bez generowania za kazdym razem

 

czas generowania <1 sekunda

czas wykonania 3 sekundy

czas wykonania <1 sekunda

 

wniosek? opłaca się stosowac metodę do duzych liczb gdyż nawet jednokrotne jej zastosowanie jest szybsze niż metoda iteracyjna

 

dla porównania to samo co wyżej ale dla 100000 obliczeń silni z miliona bez generowania

czas generowania <1 sekunda

czas wykonania 342 sekundy

czas wykonania <1 sekunda


  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#7 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 31.03.2015 23:37


Jest. Permutacja z powtórzeniami powstaje, gdy w ciągu który permutujemy mamy choć 1 parę nierozróżnialnych elementów, przykład: 1, 2, 2, 3, 4, 5, 6, 7, 8 - w tym ciągu mamy 2 dwójki więc zamieniając je ze sobą otrzymujemy nadal ten sam ciąg.

 

nazwałbym to wtedy wariacją n-elementową z powtórzeniami n-elementowego zbioru a nie permutacją (w sumie permutacja to n-elementowa wariacja n-elementowego zbioru bez powtórzeń)


  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#8 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 01.04.2015 07:39

Jakby nie patrzeć permutacja jest szczególną odmianą wariacji. We wszystkich źródłach które znam rozróżnia się wariację z powtórzeniami ;)


  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#9 wiwi249

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:440
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Tarnobrzeg
Offline

Napisano 01.04.2015 13:03

nie ma czegos takiego jak permutacje z powtórzeniami xD

Też wiem o istnieniu permutacji z powtórzeniami, mimo że to specjalna sytuacja, dalej przecież takie pojęcie występuje, spotkałem się z nim w paru źródłach. Czyżby jakaś potrzeba przyczepienia się do słowa?
Permutacje z powtórzeniami można sobie obliczyć w sumie samemu z tych funkcji, jeszcze nie rozkminiałem jak to wygląda i jak to zaprogramować i nie wiem, czy będzie potrzeba i czy będzie mi się chciało to rozkminiać, bo czy przypadkiem nie jest to indywidualna sprawa dla każdego ciągu?

Btw. http://en.wikipedia....with_repetition

Wikipedia wspomina o permutacji z powtórzeniami, ale zaznacza, że w rzeczywistości to nie jest właściwa permutacja.


  • +
  • -
  • 0

Wykonuję strony internetowe, zlecenia AMXX i HLDS - w tym pisanie pluginów, ogarnianie serwerów, edycja i tworzenie modeli.

Potrzebujesz czegoś? Pisz!

 

"śpieszmy się pisać posty, tak szybko banują..." ~ sebul


#10 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 02.04.2015 12:47

@ wiwi249: są 2 opcje: albo podajesz jako parametr ciąg permutowany (proponuję uniknąć, bo nie wiadomo czy ciąg będzie współrzędnymi, liczbami, literami więc ciężko porównać i wyliczyć w funkcji ilość powtórzeń) albo podać jako 1 parametr ilość elementów a jako pozostałe (dać możliwość podania dowolnej liczby) ilość powtórzeń, czyli dla ciągu aabcdeffghhhi podajemy _comb_permutation(13, 2, 2, 3) bo mamy 13 znaków, a powtarza się 2 razy, f 2 razy, h 3 razy.

Logika już bardzo prosta, liczymy silnię 1 argumentu, następnie wynik dzielimy przez silnię 2 argumentu, to co zostanie dzielimy przez silnię 3 argumentu, to co zostanie dzielimy przez silnię 4 argumentu i tak dalej...


  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark





Również z jednym lub większą ilością słów kluczowych: matma, inc, biblioteka, kombinatoryka

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych