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í
×
    dnes 11:55 | Zajímavý software

    Software LibrePods osvobozuje bezdrátová sluchátka AirPods z ekosystému Applu. Exkluzivní funkce AirPods umožňuje využívat na Androidu a Linuxu. Díky zdokumentování proprietárního protokolu AAP (Apple Accessory Protocol).

    Ladislav Hagara | Komentářů: 0
    dnes 05:00 | Nová verze

    Byl vydán AlmaLinux OS 10.1 s kódovým názvem Heliotrope Lion. S podporou Btrfs. Podrobnosti v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Komunita

    Placená služba prohledávání zprostředkovatelů dat a automatického odstraňování uniklých osobních údajů Mozilla Monitor Plus bude 17. prosince ukončena. Bezplatná monitorovací služba Mozilla Monitor bude i nadále poskytovat okamžitá upozornění a podrobné pokyny k omezení rizik úniku dat. Služba Mozilla Monitor Plus byla představena v únoru loňského roku.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | Nová verze

    Waydroid (Wikipedie, GitHub) byl vydán v nové verzi 1.6.0. Waydroid umožňuje spouštět aplikace pro Android na běžných linuxových distribucích. Běhové prostředí vychází z LineageOS.

    Ladislav Hagara | Komentářů: 1
    včera 15:44 | Nová verze

    Příspěvek na blogu Raspberry Pi představuje novou kompletně přepracovanou verzi 2.0 aplikace Raspberry Pi Imager (YouTube) pro stažení, nakonfigurování a zapsání obrazu operačního systému pro Raspberry Pi na SD kartu. Z novinek lze vypíchnout volitelnou konfiguraci Raspberry Pi Connect.

    Ladislav Hagara | Komentářů: 2
    včera 11:22 | Nová verze

    Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 8.00. Přináší podporu nejnovějších procesorů Intel a AMD nebo také tmavý režim.

    Ladislav Hagara | Komentářů: 0
    včera 10:55 | Nová verze

    Programovací jazyk Racket (Wikipedie), tj. jazyk z rodiny jazyků Lisp a potomek jazyka Scheme, byl vydán v nové major verzi 9.0. Hlavní novinku jsou paralelní vlákna (Parallel Threads).

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

    Před šesti týdny bylo oznámeno, že Qualcomm kupuje Arduino. Minulý týden byly na stránkách Arduina aktualizovány podmínky používání a zásady ochrany osobních údajů. Objevily se obavy, že by otevřená povaha Arduina mohla být ohrožena. Arduino ubezpečuje, že se nic nemění a například omezení reverzního inženýrství v podmínkách používání se týká pouze SaaS cloudové aplikace.

    Ladislav Hagara | Komentářů: 0
    23.11. 13:33 | Bezpečnostní upozornění

    Knihovna libpng, tj. oficiální referenční knihovna grafického formátu PNG (Portable Network Graphics), byla vydána ve verzi 1.6.51. Opraveny jsou 4 bezpečnostní chyby obsaženy ve verzích 1.6.0 (vydána 14. února 2013) až 1.6.50. Nejvážnější z chyb CVE-2025-65018 může vést ke spuštění libovolného kódu.

    Ladislav Hagara | Komentářů: 12
    23.11. 12:22 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 159 (pdf).

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (22%)
     (15%)
     (23%)
     (16%)
     (17%)
    Celkem 397 hlasů
     Komentářů: 17, poslední 19.11. 21:57
    Rozcestník

    Dotaz: Trie v pythonu

    13.4.2007 18:21 Pepa
    Trie v pythonu
    Přečteno: 161×
    DD, snazim se ulozit slovnik ze souboru (cca 6milionu slov - soubor ma asi 80MB, kazde zvlast na kazdem radku), do struktury Trie (co pismeno, to uzel - spolecne prefixy slov). Cilem je redukovat pametovy prostor zabrany vlastnim slovnikem. At se vsak problem snazim vyresit jakkoli, stale narazim na nedostatek pameti. Zkousel jsem jiz vnorene seznamy, slovniky a naposledy strukturu, neco ve smyslu:
    class TNode:
            term, subNodes, data = None, (), None
    
            def __init__(self, data):
                    self.data=data #vlastni pismeno
                    self.subNodes=() #ntice poduzli
                    self.term=None #ukoncovaci terminal
    
    class tri:
            #############################
            def __init__(self):
                    """
                    Inicializace
                    """
                    self.root=self.addNode('#')
    
            ############################
            def add(self, word):
                    """
                    Prida slovo do slovniku
                    """
                    curNode=self.root
                    for letter in word:
                            notInTree=True
                            for i in curNode.subNodes:
                                    if i.data==letter:
                                            notInTree=False
                                            index=i
                                            break
                            if notInTree:
                                    temp=list(curNode.subNodes)
                                    temp.append(self.addNode(letter))
                                    curNode.subNodes=tuple(temp)
                                    index=curNode.subNodes[-1]
                            curNode=index
    
    Ovsem i pri pouziti teto struktury, nactu-li vice nez 350 000 slov tak se pamet zabrana programem vysplha na nejakych cca 100MB.

    Napadlo by nejake vhodne efektivni reseni? Jenom doplnim ze s pythonem vice mene zacinam, ale s timto problemem jsem stravil uz mnoho drahoceneho casu, tak mne to nedalo abych se nezeptal.

    Dekuji za odpoved

    Pepa H.

    Odpovědi

    Pavel Stárek avatar 13.4.2007 19:39 Pavel Stárek | skóre: 43 | blog: Tady bloguju já :-) | Kolín
    Rozbalit Rozbalit vše Re: Trie v pythonu
    Možná by bylo vhodnější ten soubor naimportovat do nějaké databáze - například sqlite. Popisky a návody například http://www.devshed.com/c/a/Python/Using-SQLite-in-Python/ a o samotné sqlite http://www.root.cz/clanky/sqlite-ultra-lehke-sql/ .
    Kdo chce, hledá způsob; kdo nechce, hledá důvod.
    13.4.2007 21:46 8an | skóre: 30
    Rozbalit Rozbalit vše Re: Trie v pythonu
    Obávám se že režie Pythonu na objekt a seznamy v něm bude mnohem větší než kolik tím můžeš ušetřit. Trie má smysl pro rychlejší vyhledávání (i když i to je sporné), ne pro úsporu paměti. Pro tohle by se asi hodil indexsekvenční soubor (bloky např. po 4kB, a pamatuješ si interval slov v každém bloku), ale kolik to má jako normální Pythonovský slovník? 100MB paměti dneska nic není...
    If you build an operating system that even an idiot can use, only idiots will use it.
    14.4.2007 22:35 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Trie v pythonu
    AFAIK trie smysl pro zkompaktnění dat má - viz TAOCP, třetí díl a TeX the Program od par. 919.

    Prostorově efektivní implementaci jsem dělal (v jiném jazyce, nevím zda to jde v Pythonu) tak, že jsem alokoval dostatečně velké pole znakú, a s ním pak pracoval přímo pomocí indexu. Tím by se měl minimalizovat overhead jazyka. Po kompaktifikaci lze pole zmenšit na potřebné minimum.

    Doporučuji se podívat na ten zdroják TeXu - je to myslím stáhnutelné (tex.web) a docela dokumentované. Tvorba trie tabulky je od par. 942.

    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.