abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:11 | Nová verze

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 22:22 | Bezpečnostní upozornění

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 2
    včera 21:11 | Zajímavý článek

    V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.

    Ladislav Hagara | Komentářů: 6
    včera 14:33 | Pozvánky

    O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    8.5. 21:55 | Nová verze

    Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.

    Ladislav Hagara | Komentářů: 22
    8.5. 20:22 | IT novinky

    Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.

    Ladislav Hagara | Komentářů: 5
    8.5. 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    7.5. 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 10
    7.5. 18:33 | IT novinky

    Apple představil (keynote) iPad Pro s čipem Apple M4, předělaný iPad Air ve dvou velikostech a nový Apple Pencil Pro.

    Ladislav Hagara | Komentářů: 4
    7.5. 17:11 | Nová verze

    Richard Biener oznámil vydání verze 14.1 (14.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 14. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (63%)
     (8%)
     (13%)
     (16%)
    Celkem 147 hlasů
     Komentářů: 10, poslední 8.5. 17:35
    Rozcestník

    Dotaz: Trie v pythonu

    13.4.2007 18:21 Pepa
    Trie v pythonu
    Přečteno: 130×
    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: 44 | 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.