Suche Bilder Maps Play YouTube News Gmail Drive Mehr »
Erweiterte Patentsuche | Abbildungen der Seite | Webprotokoll | Anmelden

Patente

  

IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

US006304878B1

(12) United States Patent ao) Patent No.: us 6,304,878 Bi

Karlov et al. (45) Date of Patent: Oct. 16,2001

(54) METHOD AND SYSTEM FOR IMPROVED ENUMERATION OF TRIES

(75) Inventors: Donald D. Karlov, Woodinville;

Gregory N. Hullender, Kirkland; John
R. Bennett, Redmond, all of WA (US)

(73) Assignee: Microsoft Corporation, Redmond, WA (US)

( * ) Notice: Subject to any disclaimer, the term of this patent is extended or adjusted under 35 U.S.C. 154(b) by 0 days.

(21) Appl. No.: 09/199,949

(22) Filed: Nov. 23, 1998

(51) Int. CI.7 G06F 17/00; G06F 17/21

(52) U.S. CI 707/102; 707/3; 704/10

(58) Field of Search 707/1, 3, 4, 6,

707/7, 100, 101, 102, 103, 104; 704/1,

8, 9, 10

(56) References Cited

U.S. PATENT DOCUMENTS

4,730,348 3/1988 MacCrisken 375/240

4.814,746 3/1989 Miller et al 341/95

4,853,696 8/1989 Mukherjee 341/65

4,959,785 9/1990 Yamamoto et al 707/533

5,283,894 2/1994 Deran .

5.475,588 * 12/1995 Schabes et al 704/9

5^488,717 * 1/1996 Gibson et al 395/600

5,488,719 * 1/1996 Kaplan et al 395/600

5.532,694 7/1996 Mayers et al 341/67

5,592,667 1/1997 Bugajski 707/102

5,625,554 4/1997 Cutting et al 707/100

5.651,099 * 7/1997 Konsella 395/13

5,721,899 * 2/1998 Namba 395/603

5,768,423 * 6/1998 Aref et al 382/228

5,778,371 7/1998 Fujihara 707/100

5,781,772 * 7/1998 Wilkinson, III et al 395/600

5,799,299 8/1998 Fujiwara 707/3

5,832,428 * 11/1998 Chow et al 704/254

5.951,623 9/1999 Reynar et al 708/203

5,966,709 10/1999 Zhang et al 707/101

6,009,392 * 12/1999 Kanevsky et al 704/245

6,131,102 * 10/2000 Potter 707/533

6,182,039 * 1/2001 Rigazio et al 704/257

6,236,959 * 5/2001 Weise 704/9

FOREIGN PATENT DOCUMENTS

41-0301596 A 11/1998 (IP) G10L/3/00

OTHER PUBLICATIONS

Knuth, Donald Ervin, "Sorting and Searching," The Art of Computer Programming 2nd Edition, vol. 3, Addison-Wesley, pp. 492-496, 500-502, 507-509, 512, 576, 722 (1998).

* cited by examiner

Primary Examiner—-Thomas Black
Assistant Examiner—Mary Wang

(74) Attorney, Agent, or Firm—Michalik & Wylie, PLLC (57) ABSTRACT

A method and system for enumerating a trie of states of nodes. A node near the middle of a state of alphabetically ordered nodes is selected as a skip node and moved to the logical beginning of the state. The skip node is provided with a pointer to a jump node that is at the skip node's former position, and the node immediately to the left of the node's former position is marked as a soft terminal node. As a result of the alphabetic ordering, the segment of nodes before the jump node are alphabetically before the skip node, while the segment of nodes after the jump node are alphabetically after the skip node. The segments of the state may be recursively split into further segments via further skip nodes, jump nodes and soft terminal nodes, and, once the segments are split as desired, the nodes within the segment may be sorted. When searching the state, if a skip node is reached that does not equal the search character, the search moves to the jump node if the search character is greater than the skip node, or to the next node if the search character is less than the skip node. The search of the nodes continues, essentially as a binary search when skip nodes are encountered, and a linear search otherwise, until a node is found that matches the search character or a soft or regular terminal node is reached.

36 Claims, 8 Drawing Sheets

[graphic][merged small][merged small][merged small][graphic]
[merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][table][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][table][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][merged small][table][merged small][merged small][merged small][merged small][merged small][merged small]
[table][merged small][graphic][merged small][table][merged small]
[graphic]
« ZurückWeiter »