eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Algorytm wyboru k z n
Ilość wypowiedzi w tym wątku: 8

  • 1. Data: 2015-07-24 17:32:10
    Temat: Algorytm wyboru k z n
    Od: Borneq <b...@a...hidden.pl>

    Jak wypisać wszystkie możliwości k z n?na przykład wypisać 32-bitowe
    liczby, które by miały 6 bitów zapalonych?


  • 2. Data: 2015-07-24 17:48:39
    Temat: Re: Algorytm wyboru k z n
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2015-07-24 o 17:32, Borneq pisze:
    > Jak wypisać wszystkie możliwości k z n?na przykład wypisać 32-bitowe
    > liczby, które by miały 6 bitów zapalonych?

    Podobno kod Graya w tym pomaga, ale nie widzę w jaki sposób


  • 3. Data: 2015-07-24 19:47:00
    Temat: Re: Algorytm wyboru k z n
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2015-07-24 o 17:48, Borneq pisze:
    > W dniu 2015-07-24 o 17:32, Borneq pisze:
    >> Jak wypisać wszystkie możliwości k z n?na przykład wypisać 32-bitowe
    >> liczby, które by miały 6 bitów zapalonych?
    >
    > Podobno kod Graya w tym pomaga, ale nie widzę w jaki sposób
    Jest algorytm: http://webhome.csc.uvic.ca/~haron/CoolCombo.pdf


  • 4. Data: 2015-07-24 19:48:51
    Temat: Re: Algorytm wyboru k z n
    Od: bartekltg <b...@g...com>

    On 24.07.2015 17:32, Borneq wrote:
    > Jak wypisać wszystkie możliwości k z n?na przykład wypisać 32-bitowe
    > liczby, które by miały 6 bitów zapalonych?


    Nakarm googla
    Enumerating k-combinations
    (enumerate) numbers with k bits set
    matlab nchoosek.m ;-)

    http://stackoverflow.com/questions/127704/algorithm-
    to-return-all-combinations-of-k-elements-from-n

    Tu masz kilka różnych algorytmów, włącznie z kodami greya.


    Podoba mi się ten bitowy:
    http://stackoverflow.com/questions/1851134/generate-
    all-binary-strings-of-length-n-with-k-bits-set
    http://www.graphics.stanford.edu/~seander/bithacks.h
    tml#NextBitPermutation

    Po małym odkurzeniu:

    int main() {
    int k=4;
    const int n=7;
    uint64_t v= (1<<k) - 1;

    while ( v < (1<<n) ) {
    cout<<bitset<n>(v)<<endl;
    uint64_t t = (v | (v - 1)) + 1;
    v = t | ((((t & -t) / (v & -v)) >> 1) - 1);
    }
    }

    bitset<n> jest tylko do ładnego wyświetlania.

    Ograniczone jest niestety do 64 obiektów.
    boost::multiprecision::int128_t i podobne marudzą na
    jednoargumentowy minus, można je nakłonić do współpracy tak:
    v = t | ((((t & 0-t) / (v & 0-v)) >> 1) - 1);

    pzdr
    bartekltg


    0001111
    0010111
    0011011
    0011101
    0011110
    0100111
    0101011
    0101101
    0101110
    0110011
    0110101
    0110110
    0111001
    0111010
    0111100
    1000111
    1001011
    1001101
    1001110
    1010011
    1010101
    1010110
    1011001
    1011010
    1011100
    1100011
    1100101
    1100110
    1101001
    1101010
    1101100
    1110001
    1110010
    1110100
    1111000


  • 5. Data: 2015-07-24 20:51:17
    Temat: Re: Algorytm wyboru k z n
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2015-07-24 o 19:48, bartekltg pisze:
    > Podoba mi się ten bitowy:
    > http://stackoverflow.com/questions/1851134/generate-
    all-binary-strings-of-length-n-with-k-bits-set
    >
    > http://www.graphics.stanford.edu/~seander/bithacks.h
    tml#NextBitPermutation
    >
    > Po małym odkurzeniu:
    >
    > int main() {
    > int k=4;
    > const int n=7;
    > uint64_t v= (1<<k) - 1;
    >
    > while ( v < (1<<n) ) {
    > cout<<bitset<n>(v)<<endl;
    > uint64_t t = (v | (v - 1)) + 1;
    > v = t | ((((t & -t) / (v & -v)) >> 1) - 1);
    > }
    > }
    Przyjrzę się, 64 obiekty to dużo, nie będę potrzebował nawet 32.

    na razie przeglądam http://webhome.csc.uvic.ca/~haron/CoolCombo.pdf
    począwszy od rekurencyjnego, wszystkie dla argumentów (3, 2) dają wyniki:
    11000
    01100
    10100
    01010
    00110
    10010
    01001
    00101
    00011
    10001

    Teraz chcę uruchomić ten ostatni bitowy, są tam symvole matematyczne jak
    and, xor, ale nie rozumiem strona 11 linia kodu 9: jest tam znak jakby
    "Saturna" a za nią jednynka. Co to może być za operacja?


  • 6. Data: 2015-07-24 21:29:39
    Temat: Re: Algorytm wyboru k z n
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2015-07-24 o 20:51, Borneq pisze:
    > Teraz chcę uruchomić ten ostatni bitowy, są tam symvole matematyczne jak
    > and, xor, ale nie rozumiem strona 11 linia kodu 9: jest tam znak jakby
    > "Saturna" a za nią jednynka. Co to może być za operacja?

    Jest:
    The operator o is a specialized form of subtraction, called saturating
    subtraction,where the result of i o j is i - j if i >= j,
    and is 0 if i < j.



  • 7. Data: 2015-07-24 22:04:41
    Temat: Re: Algorytm wyboru k z n
    Od: bartekltg <b...@g...com>

    On 24.07.2015 20:51, Borneq wrote:
    > W dniu 2015-07-24 o 19:48, bartekltg pisze:
    >> Podoba mi się ten bitowy:
    >> http://stackoverflow.com/questions/1851134/generate-
    all-binary-strings-of-length-n-with-k-bits-set
    >>
    >>
    >> http://www.graphics.stanford.edu/~seander/bithacks.h
    tml#NextBitPermutation
    >>
    >>
    >> Po małym odkurzeniu:
    >>
    >> int main() {
    >> int k=4;
    >> const int n=7;
    >> uint64_t v= (1<<k) - 1;
    >>
    >> while ( v < (1<<n) ) {
    >> cout<<bitset<n>(v)<<endl;
    >> uint64_t t = (v | (v - 1)) + 1;
    >> v = t | ((((t & -t) / (v & -v)) >> 1) - 1);
    >> }
    >> }
    > Przyjrzę się, 64 obiekty to dużo, nie będę potrzebował nawet 32.
    >
    > na razie przeglądam http://webhome.csc.uvic.ca/~haron/CoolCombo.pdf
    > począwszy od rekurencyjnego, wszystkie dla argumentów (3, 2) dają wyniki:
    > 11000
    > 01100
    > 10100
    > 01010
    > 00110
    > 10010
    > 01001
    > 00101
    > 00011
    > 10001
    >
    > Teraz chcę uruchomić ten ostatni bitowy, są tam symvole matematyczne jak
    > and, xor, ale nie rozumiem strona 11 linia kodu 9: jest tam znak jakby
    > "Saturna" a za nią jednynka. Co to może być za operacja?

    Czy Twoim celem jest dokładne zapoznanie się z algorytmem, czy użycie
    go? :>

    pzdr
    bartekltg





  • 8. Data: 2015-07-24 23:06:54
    Temat: Re: Algorytm wyboru k z n
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2015-07-24 o 22:04, bartekltg pisze:
    > Czy Twoim celem jest dokładne zapoznanie się z algorytmem, czy użycie
    > go? :>

    Ten opisany jest bardziej zrozumiały, choć może nie tak szybki jak ten w
    C, ale piszę w C#. Ale tak się nie wgłębiałem, tyle że uruchomiłem te
    algorytmy. Chodzi o użycie jako części większego algorytmu.

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: