#programowanie #informatyka #algorytmy

Mam algorytm opisany w pewnym art. naukowym. W jednym z etapów są generowane słowa o ustalonej długości, ze stałego alfabetu. Są one zbierane w tabelę oraz tworzona jest struktura określona jako "augmented trie". Ogólnie każdy węzeł zawiera znak z wyżej wspomnianego alfabetu i idąc znak po znaku docieramy do listy indeksów, w których dane słowo znajduje się w tabeli. Google za bardzo nic
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Sebaall: używaliśmy takiej struktury na laborkach, najbardziej wydajne do tego jest marisa-trie, jest gotowa wygodna biblioteka w pythonie, w C pewnie też
  • Odpowiedz
Zna ktoś jakiś wydajny algorytm do rozwiązywania długów? Problem można zdefiniować następująco;

- Mamy grupę

- Wewnątrz tej grupy następują pożyczki. Ania pożycza Markowi X, Marek Zosi Y, Zosia Ani Z etc. Po wszystkim możemy zsumować balans, I każdy będzie miał pojedynczą wartość długu - na plusie lub minusie. Wszystkie kwoty zrównają się do zera. Dług na pewno da się wyregulować za pomocą maksimum jednego transferu na osobę. Jak to policzyć?

#
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Panowie, mam problema.

Mam zapisaną trasę gps 20 km z punktami co x metrów. I teraz chcę obliczyć najszybsze 5 km. Jest na to jakiś algorytm, czy coś? Czy mam po prostu wziąć 5km od punktu 1., i pobrać czas, potem od punktu 2. i sprawdzić, czy czas był krótszy itd?

#algorytmy #matematyka #programowanie
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mirki, potrzebuję pomocy w wymyśleniu algorytmu. Trzy dni nad tym myślę i do niczego sensownego nie doszedłem. Problem jest dość skomplikowany, nie chcę go przedstawiać abstrakcyjnie więc wymyśliłem taki przykład, który pozwala bez problemu zrozumieć o co chodzi.

Dany jest graf spójny, który reprezentuje jakiś duży obszar. Każdy węzeł grafu odpowiada miejscowości, natomiast krawędź między dwoma węzłami oznacza, że miejscowości są bezpośrednio połączone drogą.

W każdej miejscowości może stać szpital, szkoła albo żadne
  • 20
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Onoki: @prusi: Dla samego szpitala ten problem nazywa się problemem minimalnego zbioru dominującego. Już jako taki jest problemem NP-trudnym. Ty chcesz znaleźć dwa rozłączne zbiory dominujące, których suma elementów jest jak najmniejsza, czyli coś jeszcze trudniejszego :). Możesz poczytać o zbiorach dominujących i algorytmach, które je szukają. Dzięki temu wymyślisz coś co rozwiąże twój problem, ale na pewno nie w czasie wielomianowym. Nie ma się jednak co załamywać,
  • Odpowiedz
w sumie to #programowanie #onp #algorytmy

W sumie prędzej czy później musiało to się zdarzyć. Jak odróżnić (w możliwie prosty ale skuteczny sposób) '-' od '-'. Chodzi mi o odróżnienie unarnego minusa (negacji) od odejmowania. A dokładnie chodzi mi o to, czy są na to jakieś sprawdzone metody, do których widocznie nie dotarłem czy trzeba samodzielnie się z tym uporać. Może macie jakieś wskazówki? W sumie
  • 21
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hej, specjaliści od ekonomii i statystyki. Myślę, że to dość podstawowe dla Was pytanie. Mam zestaw danych historycznych, jak wyliczyć przyszłą tendencję? Przykładowo: ktoś wszedł na stronę 150 razy dwa tygodnie temu, 100 razy w zeszłym tygodniu, 80 razy w tym tygodniu, czy jest jakieś proste do zaimplementowania rozwiązanie mówiące ile wejść będzie w przyszłym tygodniu i czy tendenja jest spadkowa lub wzrostowa? (PS. funkcje liniową z dwóch ostatnich danych sam sobie
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@uirapuru: rzuciłem tak tym wygładzaniem, bo z tego co wiem, nadaje się do badania tendencji i tyle mi wiadomo ;p - dogłębnie zajmowałem się innymi metodami, ale one są trochę zbyt złożone. W sumie, to nie wiem, czy ta jest prostsza, ale może gdzieś istnieje gotowy kod ('exponential smoothing').

Jak Ci specjalnie nie zależy na dokładności, to może po prostu daj linię trendu po najmniejszych kwadratach... zwłaszcza, jeśli nie zamierzasz
  • Odpowiedz
@uirapuru: opisujesz chyba klasyczną MNK. Ale stary naprawdę nie wiem po co ci to, każda metoda, mniej czy bardziej złożona, stanowi ekstrapolację już obecnego trendu i takie prognozy nie maja kolosalnej wartości, chyba ze jestes quantem który na tym zarabia
  • Odpowiedz
Potrzebuję przenieść całkiem spory arkusz Excela (ok 20tyś wierszy x 20 kolumn) do MySQL. Zaprzęgnąłem do tego #php z biblioteką PHPExcel i o ile odczyt tego trwa parę do parunastu sekund o tyle późniejsze zapytanie PDO zarzyna mi pamięć w kompie (2GB). Oczywiście mam odblokowane w php.ini użycie pamięci, bo bez tego to 128MB siada niemal od razu. Odpada przenoszenie Excela bezpośrednio do MySQL, bo muszę porównywać rekordy i robić
  • 25
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

wie ktoś może, jak zrealizować taką strukturę danych (jakieś drzewo), na którym mozna by wykonywać operacje:

* zwiększam obciążenie wszystkich elementów przedziału (a, b) o 1

* zwracam liczbę elementów przedziału (a, b) większych od jakiegoś k (z góry ustalonego)

Operacje
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kuhar: to właśnie jest z OIa, tyle że zeszłorocznego (i nie ma jeszcze niebieskiej książeczki z rozwiązaniem). Dzięki za podpowiedź, może coś wykminię
  • Odpowiedz
Zna ktoś może jakiś dowód, bądź dobre wytłumaczenie dlaczego największą potęgą dwójki dzieląca x jest: ((x ^ (x-1)) + 1) / 2 lub też x & (-x) ?

Na przykładach działa oczywiście, ale nie czaję tego do końca, jest tego jakieś uzasadnienie, czy po prostu ktoś na to wpadł przypadkowo i się okazało że tak jest?

#programowanie #informatyka #algorytmy
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@piternet:

x & (-x)
bo jak tworzysz liczbe ujemna, to przepisujesz od prawej wszystkie zera do pierwszej jedynki wlacznie, a wiec z 'oryginalnych' bitow zachowa sie po AND wlasnie tylko ta jedynka, a reszta to beda zera

a ta jedynka, to bedzie pierwsza potega dwojki, z ktorej sklada sie
  • Odpowiedz
Siema, potrzebuję pilnie algorytmu. Piszę program, którego celem jest poprawianie źle rozdzielonych/złączonych słów.

Problem wygląda następująco - mam powiedzmy zdanie:

"Zosia ma kota"

Niestety
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Onoki: Wykorzystuję właśnie taki prymitywny algorytm, ale lepszym pomysłem jest jednak dzielenie na sylaby, bo sprawdzenie słowa po literce w cholernie dużym słowniku trwa dość długo. A co do szukania w słowniku to mam zamiar podzielić go na mniejsze, odpowiadajace literom alfabetu.
  • Odpowiedz
@pavlucco: A jakbyś tak wczytał cały słownik do aplikacji i rozpiął go na drzewie binarnym? Zajmowałoby to sporo pamięci (bez znaczenia w dzisiejszych czasach), ale wyszukiwanie byłoby bardzo szybkie.

Nie wiem w jakim języku piszesz, ale w C++ i w Javie są mapy i zbiory oparte na drzewach czerwono-czarnych. Idealne do takiego słownika.
  • Odpowiedz