abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 17:02 | Pozvánky

Přijďte si popovídat o open source obecně a openSUSE konkrétně s dalšími uživateli a vývojáři. Oslava nového vydání openSUSE Leap se uskuteční 16. prosince od 17:00 v nových prostorách firmy SUSE v Praze. K dispozici bude nějaké občerstvení a DVD pro ty, kdo je sbírají nebo ještě mají mechaniku. Po párty v kanceláři se bude pokračovat v některé z hospod v okolí.

Miška | Komentářů: 6
dnes 14:55 | Zajímavý software

Byla vydána verze Alpha 1.0 otevřeného operačního systému pro chytré hodinky AsteroidOS. Podporovány jsou hodinky LG G Watch, LG G Watch Urbane, Asus ZenWatch 2 a Sony Smartwatch 3. Ukázka ovládání hodinek na YouTube. Jaroslav Řezník přednášel o AsteroidOS na chytrých hodinkách (videozáznam) na letošní konferenci OpenAlt.

Ladislav Hagara | Komentářů: 0
dnes 13:30 | Zajímavý software

Byly uvolněny zdrojové kódy známé rogue-like hry DoomRL. Počátky hry jsou v roce 2002. Je napsána ve FreePascalu a zdrojový kód je nyní k dispozici na GitHubu pod licencí GNU GPL 2.0. Autor pracuje na nové hře Jupiter Hell, která je moderním nástupcem DoomRL a na jejíž vývoj shání peníze prostřednictvím Kickstarteru.

Blaazen | Komentářů: 0
dnes 13:15 | Pozvánky

Přijďte s námi oslavit vydání Fedory 25. Na programu budou přednášky o novinkách, diskuse, neřízený networking atd. Release Party se bude konat 16. prosince v prostorách společnosti Etnetera. Na party budou volně k dispozici také propagační materiály, nová DVD s Fedorou 25 a samozřejmě občerstvení. Přednášky budou probíhat v češtině. Pro více informací se můžete podívat na web MojeFedora.cz. Jen připomínám, že tentokrát jsme zavedli

… více »
frantisekz | Komentářů: 0
včera 16:38 | Komunita

Byly zveřejněny videozáznamy přednášek a workshopů z letošní konference OpenAlt konané 5. a 6. listopadu v Brně. K videozáznamům lze přistupovat ze stránky na SuperLectures nebo přes program konference, detaily o vybrané přednášce nebo workshopu a dále kliknutím na ikonku filmového pásu. Celkově bylo zpracováno 65 hodin z 89 přednášek a workshopů.

Ladislav Hagara | Komentářů: 0
včera 11:30 | Komunita

Bylo oznámeno, že bude proveden bezpečnostní audit zdrojových kódů open source softwaru pro implementaci virtuálních privátních sítí OpenVPN. Audit provede Matthew D. Green (blog), uznávaný kryptolog a profesor na Univerzitě Johnse Hopkinse. Auditována bude verze 2.4 (aktuálně RC 1, stabilní verze je 2.3.14). Audit bude financován společností Private Internet Access [reddit].

Ladislav Hagara | Komentářů: 4
včera 06:00 | Komunita

Na YouTube byl publikován Blender Institute Reel 2016, ani ne dvouminutový sestřih z filmů, které vznikly za posledních 10 let díky Blender Institutu. V institutu aktuálně pracují na novém filmu Agent 327. Dění kolem filmu lze sledovat na Blender Cloudu. Videoukázka Agenta 327 z června letošního roku na YouTube.

Ladislav Hagara | Komentářů: 0
včera 01:02 | Zajímavý článek

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

Ladislav Hagara | Komentářů: 1
8.12. 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

Ladislav Hagara | Komentářů: 1
8.12. 15:00 | Zajímavý software

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 5
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (23%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 809 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Algoritmus seřazení dat z různých souborů

6.11.2010 20:59 vhaji
Algoritmus seřazení dat z různých souborů
Přečteno: 491×
Dobrý den.

Marně se pokouším vymyslet co nejoptimálnější algoritmus řazení dat ze dvou neznámých zdrojů. Dejme tomu že mám 2 soubory či obecně zdroje dat, každý obsahuje 2 sloupce - jméno a číslo, soubory obsahují hrozně moc dat a já je potřebuju seřadit podle obou souborů a limitovat zobrazení dat. Zde na fórech jsem našel algoritmus řazení: seřadit n řádek z 1. souboru, pak n řádek s 2. a pak seřadit výsledek n+n a omezit zase na n - jenže to nebude fungovat. Z popisu asi není jasné o co mi jde - zde je příklad (např. 2 spojené soubory podle klíče username):
"user1";"1";"7"
"user2";"2";"6"
"user3";"3";"5"
"user4";"3";"4"
"user5";"4";"3"
"user6";"4";"2"
"user7";"4";"1"
Pokud chci 3 záznamy řazené podle 2. sloupce a potom 3. sloupce, tak to musí vrátit user1, user2, user4. Nepřišel jsem na optimální algoritmus jak dostat 3 záznamy aniž bych musel přečíst celý 1. soubor, celý 2. soubor a pak to limitovat až ve výsledku, což je ale velice datově a výpočetně náročné pro větší množství dat. Určitě už někdo podobný problém řešil. Prosím o pomoc/popis algoritmu pro toto řazení.

Odpovědi

6.11.2010 21:25 deadmail
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Ak tie dva subory su utriedene, tak naozaj staci n prvych riadkov z prveho suboru a n riadkov z druheho suboru utriedit a vybrat z nich prvych n.

Ak nie su, tak sa musia utriedit - bud kazdy zvlast, alebo spojene.

Ak treba viackrat z tych istych dat rozne n, tak raz utriedit oba subory a ulozit. Potom pouzit prvy sposob.
6.11.2010 21:27 kuka
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Nejak to nechapu - pokud ty soubory nejsou setridene, musi se vzdy cele projit, to se mi zda zrejme na prvni pohled.
6.11.2010 21:36 vhaji
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Zdroje dat (zde soubory) jsou setříděné. Nicméně výběr n a n řádků a jejich následné omezení fungovat nebude. Viz. příklad dat:
sloupec1+sloupec2 = soubor1, řazený vzestupně podle 2. sloupce
sloupec1+sloupec3 = soubor2, řazený vzestupně podle 3. sloupce


"user1";"1";"7"
"user2";"2";"6"
"user3";"3";"5"
"user4";"3";"4"
"user5";"4";"3"
"user6";"4";"2"
"user7";"4";"1"


1. z prvního souboru vyberu první 3 =>
 user1,
 user2,
 user3

2. z druhého souboru vyberu první 3 =>
 user7,
 user6,
 user5

3. spojím a zobrazím všechna data
 "user1";"1";"7"
 "user2";"2";"6"
 "user3";"3";"5"
 "user7";"4";"1"
 "user6";"4";"2"
 "user5";"4";"3"

4. omezím na první 3
 => user1, user2, user3 = CHYBA
Neboť primárně řadím podle 2. sloupce, tak user3 a user4 jsou nerozhodně (oba = 3), pomocí druhého sloupce ale zjistím, že user4 je před user3, což se ale při tomto algoritmu neprojeví.
wamba avatar 7.11.2010 13:53 wamba | skóre: 37 | blog: wamba
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
co vybrat jich n plus všechny, co mají stejný druhý sloupec jak n-tý
This would have been so hard to fix when you don't know that there is in fact an easy fix.
rADOn avatar 8.11.2010 16:37 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Pises ze zdroje dat jsou setridene, nicmene uvedeny priklad setrideny neni (resp. je setrideny podle jineho klice)

"2^24 comments ought to be enough for anyone" -- CmdrTaco
7.11.2010 00:00 zulu
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
což je ale velice datově a výpočetně náročné pro větší množství dat
Proto je dobré mít ta data v dobře zpracovatelném formátu a udržovat další informace pro jejich rychlé prohledávání a propojování. A tak vznikly databáze.
7.11.2010 01:24 vhaji
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Ta data nakonec budou uložena v nějakých databázích, ale pokaždé v jiných a na jiných místech ČR :-) Nicméně nakonec asi budu řadit tímto algoritmem:
1. vyberu n řádků ze zdroje 1
 .. - zjistím že m z n řádků nemají jednoznačné pořadí, tak prohledám zdroj 1 znovu a vyberu z n řádky které nemají jednoznačné pořadí + řádky s tímto "indexem", ale za limitem dotazu a postoupím dalšímu zdroji
2. to samé
.......
7.11.2010 10:54 dustin | skóre: 60 | blog: dustin
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Možná by bylo rychlejší je rovnou uložit třeba do mysql, i kdyby to mělo být jen dočasné :)

K překlopení by měl stačit jednoduchý skript.
7.11.2010 14:32 Goheeca
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
opravdu ten algoritmus funguje mne se nezda (nebo jsem ho treba nepochopil) nebot:
sloupec1+sloupec2 = soubor1, řazený vzestupně podle 2. sloupce
sloupec1+sloupec3 = soubor2, řazený vzestupně podle 3. sloupce
tzn. ze vuci sobe nejsou serazeny vubec (teda ano 1. sloupcem) -> to musis imho projit vsechny zaznamy ...
7.11.2010 12:45 Goheeca
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
to se resi takto: mam ukazatel na radek pro kazdy soubor. nastavim je na zacatek souboru. chci n zaznamu tak nkrat provedu nasledujici: porovnam navzajem vsechny radky a vyberu ten nejmensi (vzestupne razena data v souborech) a v patricnem souboru posunu ukazatel ...
7.11.2010 16:55 Martin Doucha | skóre: 23 | blog: Yet another blog
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
1) sort obou souborů podle společného sloupce

2) join na společný sloupec (join vyžaduje setříděné soubory)

3) sort na příslušné sloupce spojeného souboru

4) vypsat správný počet řádek

Podrobnosti v manuálových stránkách příkazů sort, join a head. Řešení je asymptoticky optimální.
7.11.2010 17:23 vhaji
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Jo to by šlo kdybych měl soubory a ty byly na stejném stroji. Jenže zdrojem dat může být nejenom soubor. Většinou se bude jednat o různé typy relačních databází. A kdybych to měl spojovat tímto mechanismem tak se může stát že při pokusu o vypsání 5 řádků budu muset spojit několik milionů záznamů a v nich filtrovat už programem, což je mírně řečeno velice neoptimální. Ten algoritmus na který jsem nakonec přišel by měl fungovat. Příklad se "syntaxí" mysql:
jmeno; cislo; cislo2
-----------------------
"user1";"1";"7"
"user2";"2";"6"
"user3";"3";"5"
"user4";"3";"4"
"user5";"4";"3"
"user6";"4";"2"
"user7";"4";"1"

order by cislo, cislo2 limit 3 = user1, user2, user4


teď ten algoritmus:
- select cislo ... order by cislo limit 3
1 2 3
- select jmeno ... where cislo in (1,2,3) => user1, user2, user3, user4
- pak zjistim ze sporne cislo je u user3 a user4
- select jmeno ... where jmeno in ("user3", "user4") order by cislo2 limit3 => user4, user3 => prerovnam puvodni vyber "user1, user2, user3, user4" na "user1, user2, user4, user3" a omezim na 3 => "user1, user2, user4"
Zásadní vada na kráse je ale ta že tento algoritmus je docela složitý.
8.11.2010 13:54 deadmail
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Většinou se bude jednat o různé typy relačních databází.
Tak pri dotaze z kazdej databazy treba prvych n riadkov utriedenych podla vyslednych ziadanych stlpcov. A nasledne utriedit vsetky takto ziskane riadky (pri 3 databazach teda 3*n riadkov).

To je algoritmus uvedeny uz v otazke (a takisto posledny sposob uvedeny v 1. komentari). Ale to utriedenie musi byt vsade rovnake ako vysledne ziadane.
8.11.2010 14:07 deadmail
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Aha, kazda databaza je iny stlpec ... teda sa neda dopredu utriedit ...

tak potom v databaze s prvym stlpcom vybrat prvych n riadkov a k nim najst vsetky odpovedajuce v dalsich databazach (pokial vzdy existuje prisluchajuci riadok, resp. sa pouzije null, t.j. left join). Tie potom utriedit. Tak to bude optimalne z pohladu prenosu co najmenej dat.

To je tebou uvedeny algoritmus.
8.11.2010 15:48 vhaji
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
A jak jsem zjistil tak tento můj algoritmus je rovněž velice neefektivní. Praktický příklad: mám dvě databáze/tabulky. V první jsou sloupce jméno,pohlaví a v druhé jméno,výška. Každá obsahuje několik desítek tisíc řádků a já je chci seřadit podle pohlaví a pak podle výšky. Zde je kámen úrazu protože i když chci třeba 5 záznamů, tak musím z první tabulky vzít několik tisíc řádků abych je postoupil k té druhé tabulce a jakékoliv umělé omezování že max. počet postupujících záznamů je m by velice razantně změnilo výsledné hodnoty. Začínám být přesvědčený, že žádný algoritmus se asi na tohle vymyslet nedá.
8.11.2010 17:24 vhaji
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Nakonec to asi budu muset vzít z druhé strany: řadit jen podle jednoho sloupce/klíče a naprogramovat nějaké pokročilé možnosti filtrování dat.
8.11.2010 21:07 vhaji
Rozbalit Rozbalit vše Re: Algoritmus seřazení dat z různých souborů
Tak to je ještě horší než to řazení. Nejhorší je to, že aplikace má za úkol pouze data číst a ta data jsou velice často měněna, takže možnost lokálního cache odpadá.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.