Biorąc pod uwagę tablicy z N liczb całkowitych, do każdego elementu w szyku może być zwiększona przez ustaloną ilość b z pewnym prawdopodobieństwem p [ i ] , 0 ≤ i < n . Muszę znaleźć oczekiwaną liczbę zamian, które będą miały miejsce w celu posortowania tablicy za pomocą sortowania bąbelkowego .
Próbowałem następujące:
Prawdopodobieństwo dla elementu dla i < j można łatwo obliczyć na podstawie podanych prawdopodobieństw.
Korzystając z powyższego, obliczyłem oczekiwaną liczbę swapów jako:
double ans = 0.0; for ( int i = 0; i < N-1; i++ ){ for ( int j = i+1; j < N; j++ ) { ans += get_prob(A[i], A[j]); // Computes the probability of A[i]>A[j] for i < j.
Zasadniczo wpadłem na ten pomysł, ponieważ oczekiwaną liczbę zamian można obliczyć na podstawie liczby inwersji tablicy. Korzystając z podanego prawdopodobieństwa, obliczam, czy liczba zostanie zamieniona liczbą A [ j ] .
Zauważ, że początkowe elementy tablicy mogą być w dowolnej kolejności, posortowane lub nieposortowane. Następnie każda liczba może się zmienić z pewnym prawdopodobieństwem. Następnie muszę obliczyć oczekiwaną liczbę zamian.
Zadałem podobne pytanie wcześniej, ale nie miało ono wszystkich ograniczeń.
Nie dostałem żadnych dobrych wskazówek, czy jestem na dobrej drodze, czy nie, więc wymieniłem tutaj wszystkie ograniczenia. Proszę o wskazówki, jeśli źle myślę o problemie.