Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %malo veci test primer
- A = [1,2,3,4,5,6,7,8,9,10,11,12,13,14;
- 0.01,0.02,0.03,0.01,0.05,0.005,0.03, 0.004, 0.03, 0.06, 0.04, 0.03, 0.01, 0.065];
- %mali test primer, za debug ako hoces da vidis sta se desava
- %A = [1,2,3,4; 0.1, 0.2, 0.3, 0.1];
- %vektor indeksa, 0 na mestima koje nisi vec posetio, 1 na mestima koje
- %jesi, njih preskace kad trazi minimum
- pomocniVektor = zeros(1, length(A(1,:)));
- %sve dok je suma verovatnoca manja od 1 (mozes da dodas toleranciju al ja
- %nisam imao dobar test case da bih testirao)
- %Za toleranciju odradi nesto kao while(abs(1 - sum(A(2,:))) > 0.05) ili ovo
- %sranje na kvadrat umesto abs ( radi brze tako jer mu je skupo ovo abs
- %govno)
- while(sum(A(2,:)) < 1)
- %inicijalizacija indeksa i minimuma
- %minmin je najmanji, min je drugi najmanji posle njega, iminmin i imin
- %su indeksi tih govana
- minmin = Inf;
- min = Inf;
- iminmin = 0;
- imin = 0;
- %prolazi forom kroz svaki i proverava da li treba da ga umetne u neku
- %od minmin i min promenljivih
- for i = 1:length(A(2,:))
- %prvo proveri da si vec posetio taj u nekoj prethodnoj iteraciji,
- %ako jesi, samo predje na sledeci broj, a ako nisi, onda analizira
- %sta ce s njim
- if (pomocniVektor(i) == 0)
- %imas 3 slucaja
- %prvi je da ti je taj koji gledas veci od oba trenutna
- %minimuma, i onda samo preskace
- if (A(2,i) > min)
- continue;
- %ako je manji od oba minimuma, on postaje najmanji broj, a
- %prethodni najmanji, ovaj minmin, sad prelazi u min, i
- %updatujes indekse
- elseif (A(2,i) < minmin)
- min = minmin;
- imin = iminmin;
- minmin = A(2,i);
- iminmin = i;
- %i poslednji slucaj ti je ako se broj koji gledas nalazi
- %izmedju ova dva broja, onda samo treba da ga smestis u min, a
- %minmin ostaje isti. i update indeks.
- else
- min = A(2,i);
- imin = i;
- end
- end
- end
- %kad nadje minimume, onda treba da updatuje vektor posecenih, na
- %njihove indekse stavi 1
- pomocniVektor(iminmin) = 1;
- pomocniVektor(imin) = 1;
- %ovo je malo fucked up, al skontaces
- %treba da se doda nov par ovih brojeva (onaj kome je verovatnoca zbir
- %minimalnih. moras da zapamtis koliko si ih imao pre, i dodas na
- %sledece mesto taj novi. stavio sam da kao ovaj kljuc dodaje samo
- %sledeci broj, a verovatnoca je zbir one dve. i na kraju doda jos jedan
- %clan u onaj pomocni vektor indeksa da bi mogao da pratis da l si njega
- %posle posecivao, i stavis da je nula jer jos uvek nisi.
- duzina = length(A(2,:));
- A(1, duzina + 1)= duzina + 1;
- A(2, duzina + 1) = min+minmin;
- pomocniVektor(duzina + 1) = 0;
- end
- %i na kraju ti isprinta da vidis sta se sve izdesavalo
- A
- pomocniVektor
- sum(A(2,:))
- %Valjda ces da skontas, mozda je malo uz kurac otkucano, al pitaj sta god
- %treba
- %I ne znam da l je sintaksa okej za octave
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement