| Related sites for http://webglimpse.net/pubs/TR94-17.pdf |
| Open_Group_Locales Publications catalog and technical guides. | | Marghidanu,_Mircea_-_Nervus_3D_Game_Programming Resume. Graphics and game related downloads (some with sources). Links. | | OakTree_Nursery_School_Manager Software package to assist running a children's nursery school. A trial package is available to download. | | University_of_Massachusetts_-_Amherst_CBR_Group Information about research, publications, abstracts, and personnel. | | Nominum Nominum provides DNS and DHCP servers and an advanced IP name and address management system. | | DotRothschild_-_GreatBudget Offers budget preparation software for individuals and small to medium enterprises. Includes demo presentation and downloads. | | Paint_Mate_Robotics_AB Specialises in robots that do automated paint & surface treatments such as finishing and grinding. Based in Sweden. | | Mydomain_com Domain name registration, free DNS management, email forwarding, URL forwarding. | | Open_News_Network A network both in the technological and in the social sense. It aims to provide open, non commercial access to text based Usenet. | | ODBTPAPI A Python DB-API 2 module for accessing Windows databases like SQL Server, Access, Visual FoxPro or any other database for which there exists a Windows ODBC driver. This module uses the efficient Open | | Uniface_Users_Group News, hints and tips, downloads. Some areas require login. | | LaTeX_for_newbies Introduction to LaTeX explaining the most important commands by example. | | Palmasoft,_Inc_ Offers design and development, domain name registrations, search engine promotions, hosting assistance, and custom software development. | | Redboat_Design Provides website design, graphic design and illustration and hosting. | | G_Groove_Studio Specializes in web design, development, graphics, and Flash for small businesses, artists, and entertainers. | | Genesis_Webmasters Includes web and graphics design, hosting and domain assistance, database integration, scripting, marketing, e-commerce, and maintenance. Based in Cincinnati, Ohio, United States. | | Kowalski,_Anne_-_BunnyOne_Design Provides web design and maintenance, search engine optimization, and web consulting services. Located in Bethlehem, Connecticut, United States. | | Apple_International_Glossaries Translations for 1337 MacOS(TM) terms in 34 languages. For MacOS third party software developers and localization services. | | WinShark Windows-based customer relationship management program for small and medium size businesses. | | Macromedia_Fireworks_I_(EEI_Class) Fireworks training courses in the Washington D.C. area, providing information on dates, times, and instructors. |
|
| %PDF-1.13 0 obj>endobj4 0 obj>streamqBT/R3 12 Tf1 0 0 1 120.75 690 Tm(A) Tj1 0 0 1 132.375 690 Tm(FAST) Tj1 0 0 1 166 690 Tm(ALGORITHM) Tj1 0 0 1 246.375 690 Tm(FOR) Tj1 0 0 1 274.75 690 Tm(MULTI-PATTERN) Tj1 0 0 1 379.625 690 Tm(SEARCHING) TjETendstreamendobj5 0 obj225endobj6 0 obj>endobj7 0 obj>streamBT/R6 10 Tf1 0 0 1 270.5 660 Tm(Sun) Tj1 0 0 1 288.5 660 Tm(Wu) Tj1 0 0 1 220.75 630 Tm(Department) Tj1 0 0 1 270.625 630 Tm(of) Tj1 0 0 1 281.5 630 Tm(Computer) Tj1 0 0 1 324 630 Tm(Science) Tj1 0 0 1 237.5 615 Tm(Chung-Cheng) Tj1 0 0 1 296.125 615 Tm(University) Tj1 0 0 1 254.25 600 Tm(Chia-Yi,) Tj1 0 0 1 291.5 600 Tm(Taiwan) Tj1 0 0 1 250.625 585 Tm(sw@cs.ccu.edu.tw) Tj1 0 0 1 260.625 553 Tm(Udi) Tj1 0 0 1 278.125 553 Tm(Manber) Tj/R6 7 Tf1 0 0 1 309.375 557 Tm(1) Tj/R6 10 Tf1 0 0 1 220.75 523 Tm(Department) Tj1 0 0 1 270.625 523 Tm(of) Tj1 0 0 1 281.5 523 Tm(Computer) Tj1 0 0 1 324 523 Tm(Science) Tj1 0 0 1 244 508 Tm(University) Tj1 0 0 1 288.75 508 Tm(of) Tj1 0 0 1 299.625 508 Tm(Arizona) Tj1 0 0 1 250.25 493 Tm(Tucson,) Tj1 0 0 1 284.75 493 Tm(AZ) Tj1 0 0 1 300.625 493 Tm(85721) Tj1 0 0 1 248.25 478 Tm(udi@cs.arizona.edu) Tj1 0 0 1 267.5 433 Tm(May) Tj1 0 0 1 288.375 433 Tm(1994) TjETendstreamendobj8 0 obj963endobj9 0 obj>endobj10 0 obj>streamBT/R9 10 Tf1 0 0 1 263 388 Tm(SUMMARY) Tj/R6 10 Tf1 0 0 1 72 358 Tm(A) Tj1 0 0 1 82 358 Tm(new) Tj1 0 0 1 101.5 358 Tm(algorithm) Tj1 0 0 1 143.125 358 Tm(to) Tj1 0 0 1 153.625 358 Tm(search) Tj1 0 0 1 182.125 358 Tm(for) Tj1 0 0 1 196.625 358 Tm(multiple) Tj1 0 0 1 232.625 358 Tm(patterns) Tj1 0 0 1 267.125 358 Tm(at) Tj1 0 0 1 277.125 358 Tm(the) Tj1 0 0 1 292.125 358 Tm(same) Tj1 0 0 1 315.5 358 Tm(time) Tj1 0 0 1 336 358 Tm(is) Tj1 0 0 1 345.375 358 Tm(presented.) Tj1 0 0 1 391.75 358 Tm(The) Tj1 0 0 1 410.25 358 Tm(algorithm) Tj1 0 0 1 452 358 Tm(is) Tj1 0 0 1 461.5 358 Tm(faster) Tj1 0 0 1 486.75 358 Tm(than) Tj1 0 0 1 72 343 Tm(previous) Tj1 0 0 1 110.5 343 Tm(algorithms) Tj1 0 0 1 157.25 343 Tm(and) Tj1 0 0 1 175.75 343 Tm(can) Tj1 0 0 1 193.75 343 Tm(support) Tj1 0 0 1 227.75 343 Tm(a) Tj1 0 0 1 236.25 343 Tm(very) Tj1 0 0 1 258.125 343 Tm(large) Tj1 0 0 1 282.25 343 Tm(number) Tj1 0 0 1 316.875 343 Tm(\320) Tj1 0 0 1 330.875 343 Tm(tens) Tj1 0 0 1 351 343 Tm(of) Tj1 0 0 1 363.25 343 Tm(thousands) Tj1 0 0 1 407.125 343 Tm(\320) Tj1 0 0 1 421 343 Tm(of) Tj1 0 0 1 433.25 343 Tm(patterns.) Tj1 0 0 1 473.875 343 Tm(Several) Tj1 0 0 1 72 328 Tm(applications) Tj1 0 0 1 123.75 328 Tm(of) Tj1 0 0 1 135.5 328 Tm(the) Tj1 0 0 1 151.125 328 Tm(multi-pattern) Tj1 0 0 1 206.75 328 Tm(matching) Tj1 0 0 1 247.375 328 Tm(problem) Tj1 0 0 1 284.125 328 Tm(are) Tj1 0 0 1 299.875 328 Tm(discussed.) Tj1 0 0 1 346.625 328 Tm(We) Tj1 0 0 1 364 328 Tm(argue) Tj1 0 0 1 389.75 328 Tm(that,) Tj1 0 0 1 410.75 328 Tm(in) Tj1 0 0 1 422 328 Tm(addition) Tj1 0 0 1 458.25 328 Tm(to) Tj1 0 0 1 469.5 328 Tm(previous) Tj1 0 0 1 72 313 Tm(applications) Tj1 0 0 1 123.25 313 Tm(that) Tj1 0 0 1 141.125 313 Tm(required) Tj1 0 0 1 177.5 313 Tm(such) Tj1 0 0 1 198.75 313 Tm(search,) Tj1 0 0 1 229.875 313 Tm(multi-pattern) Tj1 0 0 1 284.875 313 Tm(matching) Tj1 0 0 1 324.875 313 Tm(can) Tj1 0 0 1 341.625 313 Tm(be) Tj1 0 0 1 353.875 313 Tm(used) Tj1 0 0 1 375 313 Tm(in) Tj1 0 0 1 385.5 313 Tm(lieu) Tj1 0 0 1 403.25 313 Tm(of) Tj1 0 0 1 414.375 313 Tm(indexed) Tj1 0 0 1 448.875 313 Tm(or) Tj1 0 0 1 460 313 Tm(sorted) Tj1 0 0 1 487.25 313 Tm(data) Tj1 0 0 1 72 298 Tm(in) Tj1 0 0 1 82.25 298 Tm(some) Tj1 0 0 1 105.875 298 Tm(applications) Tj1 0 0 1 156.75 298 Tm(involving) Tj1 0 0 1 197.5 298 Tm(small) Tj1 0 0 1 221.625 298 Tm(to) Tj1 0 0 1 231.875 298 Tm(medium) Tj1 0 0 1 267.125 298 Tm(size) Tj1 0 0 1 285.25 298 Tm(datasets.) Tj1 0 0 1 324.5 298 Tm(Its) Tj1 0 0 1 337 298 Tm(advantage,) Tj1 0 0 1 382.75 298 Tm(of) Tj1 0 0 1 393.625 298 Tm(course,) Tj1 0 0 1 424.875 298 Tm(is) Tj1 0 0 1 434 298 Tm(that) Tj1 0 0 1 451.5 298 Tm(no) Tj1 0 0 1 464 298 Tm(additional) Tj1 0 0 1 72 283 Tm(search) Tj1 0 0 1 100.25 283 Tm(structure) Tj1 0 0 1 137.875 283 Tm(is) Tj1 0 0 1 147 283 Tm(needed.) Tj/R3 10 Tf1 0 0 1 72 253 Tm(Keywords) Tj/R6 10 Tf1 0 0 1 115.375 253 Tm(:) Tj1 0 0 1 120.625 253 Tm(algorithms,) Tj1 0 0 1 168.375 253 Tm(merging,) Tj1 0 0 1 206.75 253 Tm(multiple) Tj1 0 0 1 242.5 253 Tm(patterns,) Tj1 0 0 1 279.25 253 Tm(searching,) Tj1 0 0 1 322.75 253 Tm(string) Tj1 0 0 1 348 253 Tm(matching.) TjETQqW0 0 612 792 renendstreamendobj11 0 obj3344endobj12 0 obj]>>stream/e,RG#QTA~>endstreamendobj13 0 obj12endobj14 0 obj>streamq4.3 0 0 -0.4 71.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 75.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 79.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 83.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 87.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 91.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 95.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 99.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 103.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 107.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 111.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 115.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 119.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 123.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 127.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 131.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 135.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 139.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 143.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 147.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 151.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 155.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 159.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 163.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 167.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 171.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 175.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 179.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 183.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 187.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 191.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 195.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 199.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 203.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 207.8 149.6 cm/R12 DoQq4.3 0 0 -0.4 211.8 149.6 cm/R12 DoQBT/R6 5 Tf1 0 0 1 72 136.625 Tm(1) Tj/R6 8 Tf1 0 0 1 77 133.5 Tm(Supported) Tj1 0 0 1 112.375 133.5 Tm(in) Tj1 0 0 1 121.125 133.5 Tm(part) Tj1 0 0 1 136.125 133.5 Tm(by) Tj1 0 0 1 146.75 133.5 Tm(a) Tj1 0 0 1 152.875 133.5 Tm(National) Tj1 0 0 1 183 133.5 Tm(Science) Tj1 0 0 1 210.375 133.5 Tm(Foundation) Tj1 0 0 1 249.5 133.5 Tm(grants) Tj1 0 0 1 271.625 133.5 Tm(CCR-9002351) Tj1 0 0 1 321 133.5 Tm(and) Tj1 0 0 1 335.125 133.5 Tm(CCR-9301129,) Tj1 0 0 1 386.5 133.5 Tm(and) Tj1 0 0 1 400.625 133.5 Tm(by) Tj1 0 0 1 411.25 133.5 Tm(the) Tj1 0 0 1 423.625 133.5 Tm(Advanced) Tj1 0 0 1 458.5 133.5 Tm(Research) Tj1 0 0 1 490.25 133.5 Tm(Pro-) Tj1 0 0 1 72 121.5 Tm(jects) Tj1 0 0 1 88.625 121.5 Tm(Agency) Tj1 0 0 1 115.375 121.5 Tm(under) Tj1 0 0 1 135.5 121.5 Tm(contract) Tj1 0 0 1 163.125 121.5 Tm(number) Tj1 0 0 1 189.5 121.5 Tm(DABT63-93-C-0052.) Tj1 0 0 1 72 103.5 Tm(The) Tj1 0 0 1 86.75 103.5 Tm(information) Tj1 0 0 1 126.875 103.5 Tm(contained) Tj1 0 0 1 160.25 103.5 Tm(in) Tj1 0 0 1 168.875 103.5 Tm(this) Tj1 0 0 1 183 103.5 Tm(paper) Tj1 0 0 1 203.125 103.5 Tm(does) Tj1 0 0 1 220.25 103.5 Tm(not) Tj1 0 0 1 233 103.5 Tm(necessarily) Tj1 0 0 1 270.875 103.5 Tm(re\257ect) Tj1 0 0 1 293.25 103.5 Tm(the) Tj1 0 0 1 305.5 103.5 Tm(position) Tj1 0 0 1 333.875 103.5 Tm(or) Tj1 0 0 1 343 103.5 Tm(the) Tj1 0 0 1 355.25 103.5 Tm(policy) Tj1 0 0 1 377.75 103.5 Tm(of) Tj1 0 0 1 386.875 103.5 Tm(the) Tj1 0 0 1 399.125 103.5 Tm(U.S.) Tj1 0 0 1 415.875 103.5 Tm(Government) Tj1 0 0 1 458.25 103.5 Tm(or) Tj1 0 0 1 467.375 103.5 Tm(other) Tj1 0 0 1 486.25 103.5 Tm(spon-) Tj1 0 0 1 72 91.5 Tm(sors) Tj1 0 0 1 86.875 91.5 Tm(of) Tj1 0 0 1 95.5 91.5 Tm(this) Tj1 0 0 1 109.125 91.5 Tm(research.) Tj1 0 0 1 141.5 91.5 Tm(No) Tj1 0 0 1 153.25 91.5 Tm(of\256cial) Tj1 0 0 1 177.875 91.5 Tm(endorsement) Tj1 0 0 1 220.625 91.5 Tm(should) Tj1 0 0 1 244 91.5 Tm(be) Tj1 0 0 1 253.5 91.5 Tm(inferred.) TjETQendstreamendobj15 0 obj3458endobj16 0 obj>>/Contents [4 0 R7 0 R10 0 R14 0 R]>>endobj17 0 obj>endobj18 0 obj>streamqBT/R17 10 Tf1 0 0 1 285.5 705 Tm(2) TjETendstreamendobj19 0 obj47endobj20 0 obj>endobj21 0 obj>streamBT/R20 14 Tf1 0 0 1 72 669 Tm(1.) Tj1 0 0 1 91.375 669 Tm(Introduction) TjETendstreamendobj22 0 obj83endobj23 0 obj>endobj24 0 obj>streamBT/R23 10 Tf1 0 0 1 72 649.875 Tm(We) Tj1 0 0 1 89.375 649.875 Tm(solve) Tj1 0 0 1 113.875 649.875 Tm(the) Tj1 0 0 1 129.5 649.875 Tm(following) Tj1 0 0 1 171.75 649.875 Tm(multi-pattern) Tj1 0 0 1 227.5 649.875 Tm(matching) Tj1 0 0 1 268.25 649.875 Tm(problem) Tj1 0 0 1 305.125 649.875 Tm(in) Tj1 0 0 1 316.375 649.875 Tm(this) Tj1 0 0 1 334.25 649.875 Tm(paper:) Tj1 0 0 1 362.875 649.875 Tm(Let) TjETendstreamendobj25 0 obj429endobj26 0 obj>endobj27 0 obj>streamBT/R26 10 Tf1 0 0 1 379.75 649.875 Tm(P) Tj/R23 10 Tf1 0 0 1 389.375 649.875 Tm(=) Tj1 0 0 1 398.5 649.875 Tm({) Tj/R26 10 Tf1 0 0 1 403.25 649.875 Tm(p) Tj/R23 7 Tf1 0 0 1 409.375 647.875 Tm(1) Tj/R23 10 Tf1 0 0 1 413.625 649.875 Tm(,) Tj/R26 10 Tf1 0 0 1 418.5 649.875 Tm(p) Tj/R23 7 Tf1 0 0 1 424.625 647.875 Tm(2) Tj/R23 10 Tf1 0 0 1 428.875 649.875 Tm(,) Tj/R26 10 Tf1 0 0 1 432.125 649.875 Tm(...) Tj/R23 10 Tf1 0 0 1 439.625 649.875 Tm(,) Tj/R26 10 Tf1 0 0 1 442.875 649.875 Tm(p) Tj/R26 7 Tf1 0 0 1 447.875 647.875 Tm(k) Tj/R23 10 Tf1 0 0 1 451.75 649.875 Tm(}) Tj1 0 0 1 460 649.875 Tm(be) Tj1 0 0 1 473 649.875 Tm(a) Tj1 0 0 1 481 649.875 Tm(set) Tj1 0 0 1 495.625 649.875 Tm(of) Tj1 0 0 1 72 634.875 Tm(patterns,) Tj1 0 0 1 109.625 634.875 Tm(which) Tj1 0 0 1 137.5 634.875 Tm(are) Tj1 0 0 1 153.25 634.875 Tm(strings) Tj1 0 0 1 183.25 634.875 Tm(of) Tj1 0 0 1 195 634.875 Tm(characters) Tj1 0 0 1 239.25 634.875 Tm(from) Tj1 0 0 1 262.125 634.875 Tm(a) Tj1 0 0 1 270 634.875 Tm(\256xed) Tj1 0 0 1 293.375 634.875 Tm(alphabet) TjETendstreamendobj28 0 obj1113endobj29 0 obj]>>stream0F%:Fmsf5sM=sAqgNO0HgNMHP\)"PPmI']BDYEgOG5#0eVs.+OWHqm901qQVlendstreamendobj30 0 obj89endobj31 0 obj>streamq6.1 0 0 -6.7 330.6 641.6 cm/R29 DoQBT1 0 0 1 336.625 634.875 Tm(.) Tj1 0 0 1 342.5 634.875 Tm(Let) Tj/R26 10 Tf1 0 0 1 359.25 634.875 Tm(T) TjETendstreamendobj32 0 obj158endobj33 0 obj>endobj34 0 obj>streamBT/R33 10 Tf1 0 0 1 365.5 634.875 Tm(=) Tj/R26 10 Tf1 0 0 1 371 634.875 Tm(t) Tj/R23 7 Tf1 0 0 1 374.875 632.875 Tm(1) Tj/R23 10 Tf1 0 0 1 379.125 634.875 Tm(,) Tj/R26 10 Tf1 0 0 1 384 634.875 Tm(t) Tj/R23 7 Tf1 0 0 1 387.875 632.875 Tm(2) Tj/R23 10 Tf1 0 0 1 392.125 634.875 Tm(,) Tj/R26 10 Tf1 0 0 1 395.375 634.875 Tm(...) Tj/R23 10 Tf1 0 0 1 402.875 634.875 Tm(,) Tj/R26 10 Tf1 0 0 1 406.125 634.875 Tm(t) Tj/R26 7 Tf1 0 0 1 408.875 632.875 Tm(N) Tj/R23 10 Tf1 0 0 1 417.625 634.875 Tm(be) Tj1 0 0 1 430.375 634.875 Tm(a) Tj1 0 0 1 438.125 634.875 Tm(large) Tj1 0 0 1 461.5 634.875 Tm(text,) Tj1 0 0 1 482.25 634.875 Tm(again) Tj1 0 0 1 72 619.875 Tm(consisting) Tj1 0 0 1 115.75 619.875 Tm(of) Tj1 0 0 1 127.375 619.875 Tm(characters) Tj1 0 0 1 171.5 619.875 Tm(from) TjETq6.1 0 0 -6.7 194.1 626.6 cm/R29 DoQBT1 0 0 1 200.125 619.875 Tm(.) Tj1 0 0 1 208.375 619.875 Tm(The) Tj1 0 0 1 227.25 619.875 Tm(problem) Tj1 0 0 1 263.875 619.875 Tm(is) Tj1 0 0 1 273.75 619.875 Tm(to) Tj1 0 0 1 284.75 619.875 Tm(\256nd) Tj1 0 0 1 303.5 619.875 Tm(all) Tj0.00390625 Tw1 0 0 1 316.75 619.875 Tm(occurrences) Tj0 Tw1 0 0 1 368.125 619.875 Tm(of) Tj1 0 0 1 379.75 619.875 Tm(all) Tj1 0 0 1 393.125 619.875 Tm(the) Tj1 0 0 1 408.75 619.875 Tm(patterns) Tj1 0 0 1 443.875 619.875 Tm(of) Tj/R26 10 Tf1 0 0 1 455.625 619.875 Tm(P) Tj/R23 10 Tf1 0 0 1 465.125 619.875 Tm(in) Tj/R26 10 Tf1 0 0 1 476.25 619.875 Tm(T) Tj/R23 10 Tf1 0 0 1 481.75 619.875 Tm(.) Tj1 0 0 1 490.125 619.875 Tm(For) Tj1 0 0 1 72 604.875 Tm(example,) Tj1 0 0 1 111 604.875 Tm(the) Tj1 0 0 1 125.75 604.875 Tm(UNIX) Tj/R26 10 Tf1 0 0 1 153.375 604.875 Tm(fgrep) Tj/R23 10 Tf1 0 0 1 177 604.875 Tm(and) Tj/R26 10 Tf1 0 0 1 194 604.875 Tm(egrep) Tj/R23 10 Tf1 0 0 1 219.375 604.875 Tm(programs) Tj1 0 0 1 259.75 604.875 Tm(support) Tj1 0 0 1 292.25 604.875 Tm(multi-pattern) Tj1 0 0 1 347 604.875 Tm(matching) Tj1 0 0 1 386.75 604.875 Tm(through) Tj1 0 0 1 420.375 604.875 Tm(the) Tj1 0 0 1 435.125 604.875 Tm(-f) Tj1 0 0 1 444.375 604.875 Tm(option.) Tj1 0 0 1 97 585.75 Tm(The) Tj1 0 0 1 116 585.75 Tm(multi-pattern) Tj1 0 0 1 171.625 585.75 Tm(matching) Tj1 0 0 1 212.375 585.75 Tm(problem) Tj1 0 0 1 249.25 585.75 Tm(has) Tj1 0 0 1 266.125 585.75 Tm(many) Tj1 0 0 1 291.875 585.75 Tm(applications.) Tj1 0 0 1 348.75 585.75 Tm(It) Tj1 0 0 1 358.375 585.75 Tm(is) Tj1 0 0 1 368.5 585.75 Tm(used) Tj1 0 0 1 390.375 585.75 Tm(in) Tj1 0 0 1 401.625 585.75 Tm(data) Tj1 0 0 1 421.875 585.75 Tm(\256ltering) Tj1 0 0 1 457 585.75 Tm(\(also) Tj1 0 0 1 480 585.75 Tm(called) Tj1 0 0 1 72 570.75 Tm(data) Tj1 0 0 1 91.75 570.75 Tm(mining\)) Tj1 0 0 1 126.375 570.75 Tm(to) Tj1 0 0 1 137.125 570.75 Tm(\256nd) Tj1 0 0 1 155.625 570.75 Tm(selected) Tj1 0 0 1 190.875 570.75 Tm(patterns,) Tj1 0 0 1 228 570.75 Tm(for) Tj1 0 0 1 242.625 570.75 Tm(example,) Tj1 0 0 1 282 570.75 Tm(from) Tj1 0 0 1 304.375 570.75 Tm(a) Tj1 0 0 1 311.75 570.75 Tm(stream) Tj1 0 0 1 341.375 570.75 Tm(of) Tj1 0 0 1 352.625 570.75 Tm(newsfeed;) Tj1 0 0 1 396.25 570.75 Tm(it) Tj1 0 0 1 404.625 570.75 Tm(is) Tj1 0 0 1 414.125 570.75 Tm(used) Tj1 0 0 1 435.375 570.75 Tm(in) Tj1 0 0 1 446 570.75 Tm(security) Tj1 0 0 1 480.625 570.75 Tm(appli-) Tj1 0 0 1 72 555.75 Tm(cations) Tj1 0 0 1 104.375 555.75 Tm(to) Tj1 0 0 1 116.125 555.75 Tm(detect) Tj1 0 0 1 144.125 555.75 Tm(certain) Tj1 0 0 1 175.5 555.75 Tm(suspicious) Tj1 0 0 1 221.125 555.75 Tm(keywords;) Tj1 0 0 1 266.875 555.75 Tm(it) Tj1 0 0 1 276.375 555.75 Tm(is) Tj1 0 0 1 287 555.75 Tm(used) Tj1 0 0 1 309.375 555.75 Tm(in) Tj1 0 0 1 321.125 555.75 Tm(searching) Tj1 0 0 1 363.625 555.75 Tm(for) Tj1 0 0 1 379.375 555.75 Tm(patterns) Tj1 0 0 1 415.125 555.75 Tm(that) Tj1 0 0 1 434.25 555.75 Tm(can) Tj1 0 0 1 452.375 555.75 Tm(have) Tj1 0 0 1 475.5 555.75 Tm(several) Tj1 0 0 1 72 540.75 Tm(forms) Tj1 0 0 1 98.25 540.75 Tm(such) Tj1 0 0 1 119.5 540.75 Tm(as) Tj1 0 0 1 130.75 540.75 Tm(dates;) Tj1 0 0 1 157 540.75 Tm(it) Tj1 0 0 1 165.375 540.75 Tm(is) Tj1 0 0 1 174.875 540.75 Tm(used) Tj1 0 0 1 196.125 540.75 Tm(in) Tj/R26 10 Tf1 0 0 1 206.75 540.75 Tm(glimpse) Tj/R23 10 Tf1 0 0 1 240.75 540.75 Tm([MW94]) Tj1 0 0 1 278.75 540.75 Tm(to) Tj1 0 0 1 289.375 540.75 Tm(support) Tj1 0 0 1 322.25 540.75 Tm(Boolean) Tj1 0 0 1 358.5 540.75 Tm(queries) Tj1 0 0 1 390.375 540.75 Tm(by) Tj1 0 0 1 403.25 540.75 Tm(searching) Tj1 0 0 1 444.5 540.75 Tm(for) Tj1 0 0 1 459 540.75 Tm(all) Tj1 0 0 1 471.75 540.75 Tm(terms) Tj1 0 0 1 496.75 540.75 Tm(at) Tj1 0 0 1 72 525.75 Tm(the) Tj1 0 0 1 87.125 525.75 Tm(same) Tj1 0 0 1 110.625 525.75 Tm(time) Tj1 0 0 1 131.25 525.75 Tm(and) Tj1 0 0 1 148.625 525.75 Tm(then) Tj1 0 0 1 168.75 525.75 Tm(intersecting) Tj1 0 0 1 218.375 525.75 Tm(the) Tj1 0 0 1 233.5 525.75 Tm(results;) Tj1 0 0 1 265.25 525.75 Tm(and) Tj1 0 0 1 282.75 525.75 Tm(it) Tj1 0 0 1 291.25 525.75 Tm(is) Tj1 0 0 1 300.875 525.75 Tm(used) Tj1 0 0 1 322.25 525.75 Tm(in) Tj1 0 0 1 333 525.75 Tm(DNA) Tj1 0 0 1 357.75 525.75 Tm(searching) Tj1 0 0 1 399.25 525.75 Tm(by) Tj1 0 0 1 412.25 525.75 Tm(translating) Tj1 0 0 1 457.5 525.75 Tm(an) Tj1 0 0 1 470 525.75 Tm(approxi-) Tj1 0 0 1 72 510.75 Tm(mate) Tj1 0 0 1 94.875 510.75 Tm(search) Tj1 0 0 1 124 510.75 Tm(to) Tj1 0 0 1 135.125 510.75 Tm(a) Tj1 0 0 1 143 510.75 Tm(search) Tj1 0 0 1 172.125 510.75 Tm(for) Tj1 0 0 1 187.25 510.75 Tm(a) Tj1 0 0 1 195.125 510.75 Tm(large) Tj1 0 0 1 218.625 510.75 Tm(number) Tj1 0 0 1 252.625 510.75 Tm(of) Tj1 0 0 1 264.375 510.75 Tm(exact) Tj1 0 0 1 289 510.75 Tm(patterns) Tj1 0 0 1 324.125 510.75 Tm([AG+90].) Tj1 0 0 1 369.375 510.75 Tm(There) Tj1 0 0 1 396.125 510.75 Tm(are,) Tj1 0 0 1 414.25 510.75 Tm(of) Tj1 0 0 1 425.875 510.75 Tm(course,) Tj1 0 0 1 457.875 510.75 Tm(many) Tj1 0 0 1 483.375 510.75 Tm(other) Tj1 0 0 1 72 495.75 Tm(applications.) Tj1 0 0 1 97 476.625 Tm(Aho) Tj1 0 0 1 117.25 476.625 Tm(and) Tj1 0 0 1 134.75 476.625 Tm(Corasick) Tj1 0 0 1 173.375 476.625 Tm([AC75]) Tj1 0 0 1 207 476.625 Tm(presented) Tj1 0 0 1 248.5 476.625 Tm(a) Tj1 0 0 1 256 476.625 Tm(linear-time) Tj1 0 0 1 303 476.625 Tm(algorithm) Tj1 0 0 1 344.875 476.625 Tm(for) Tj1 0 0 1 359.625 476.625 Tm(this) Tj1 0 0 1 377 476.625 Tm(problem,) Tj1 0 0 1 415.875 476.625 Tm(based) Tj1 0 0 1 441.75 476.625 Tm(on) Tj1 0 0 1 454.75 476.625 Tm(an) Tj1 0 0 1 467.25 476.625 Tm(automata) Tj1 0 0 1 72 461.625 Tm(approach.) Tj1 0 0 1 117 461.625 Tm(This) Tj1 0 0 1 137.875 461.625 Tm(algorithm) Tj1 0 0 1 179.875 461.625 Tm(serves) Tj1 0 0 1 208.125 461.625 Tm(as) Tj1 0 0 1 219.625 461.625 Tm(the) Tj1 0 0 1 235 461.625 Tm(basis) Tj1 0 0 1 258.125 461.625 Tm(for) Tj1 0 0 1 273 461.625 Tm(the) Tj1 0 0 1 288.375 461.625 Tm(UNIX) Tj1 0 0 1 316.625 461.625 Tm(tool) Tj/R26 10 Tf1 0 0 1 335.25 461.625 Tm(fgrep) Tj/R23 10 Tf1 0 0 1 356.375 461.625 Tm(.) Tj1 0 0 1 364.5 461.625 Tm(A) Tj1 0 0 1 374.875 461.625 Tm(linear-time) Tj1 0 0 1 422 461.625 Tm(algorithm) Tj1 0 0 1 463.875 461.625 Tm(is) Tj1 0 0 1 473.5 461.625 Tm(optimal) Tj1 0 0 1 72 446.625 Tm(in) Tj1 0 0 1 82.375 446.625 Tm(the) Tj1 0 0 1 97.25 446.625 Tm(worst) Tj1 0 0 1 122.125 446.625 Tm(case,) Tj1 0 0 1 144.625 446.625 Tm(but) Tj1 0 0 1 160 446.625 Tm(as) Tj1 0 0 1 171 446.625 Tm(the) Tj1 0 0 1 185.875 446.625 Tm(regular) Tj1 0 0 1 217 446.625 Tm(string-searching) Tj1 0 0 1 284.25 446.625 Tm(algorithm) Tj1 0 0 1 325.75 446.625 Tm(by) Tj1 0 0 1 338.5 446.625 Tm(Boyer) Tj1 0 0 1 365.75 446.625 Tm(and) Tj1 0 0 1 383 446.625 Tm(Moore) Tj1 0 0 1 412.5 446.625 Tm([BM77]) Tj1 0 0 1 447.5 446.625 Tm(demonstrated,) Tj1 0 0 1 72 431.625 Tm(it) Tj1 0 0 1 80.625 431.625 Tm(is) Tj1 0 0 1 90.375 431.625 Tm(possible) Tj1 0 0 1 126.25 431.625 Tm(to) Tj1 0 0 1 137.125 431.625 Tm(actually) Tj1 0 0 1 172 431.625 Tm(skip) Tj1 0 0 1 191.75 431.625 Tm(a) Tj1 0 0 1 199.375 431.625 Tm(large) Tj1 0 0 1 222.625 431.625 Tm(portion) Tj1 0 0 1 254.625 431.625 Tm(of) Tj1 0 0 1 266.125 431.625 Tm(the) Tj1 0 0 1 281.375 431.625 Tm(text) Tj1 0 0 1 299.375 431.625 Tm(while) Tj1 0 0 1 324.625 431.625 Tm(searching,) Tj1 0 0 1 368.625 431.625 Tm(leading) Tj1 0 0 1 401.125 431.625 Tm(to) Tj1 0 0 1 411.875 431.625 Tm(faster) Tj1 0 0 1 437.25 431.625 Tm(than) Tj1 0 0 1 457.5 431.625 Tm(linear) Tj1 0 0 1 483.375 431.625 Tm(algo-) Tj1 0 0 1 72 416.625 Tm(rithms) Tj1 0 0 1 100.125 416.625 Tm(in) Tj1 0 0 1 110.5 416.625 Tm(the) Tj1 0 0 1 125.375 416.625 Tm(average) Tj1 0 0 1 159.375 416.625 Tm(case.) Tj1 0 0 1 184.375 416.625 Tm(Commentz-Walter) Tj1 0 0 1 261.625 416.625 Tm([CW79]) Tj1 0 0 1 297.125 416.625 Tm(presented) Tj1 0 0 1 338.25 416.625 Tm(an) Tj1 0 0 1 350.375 416.625 Tm(algorithm) Tj1 0 0 1 391.875 416.625 Tm(for) Tj1 0 0 1 406.25 416.625 Tm(the) Tj1 0 0 1 421.125 416.625 Tm(multi-pattern) Tj1 0 0 1 476.125 416.625 Tm(match-) Tj1 0 0 1 72 401.625 Tm(ing) Tj1 0 0 1 87.625 401.625 Tm(problem) Tj1 0 0 1 123.875 401.625 Tm(that) Tj1 0 0 1 141.75 401.625 Tm(combines) Tj1 0 0 1 183 401.625 Tm(the) Tj1 0 0 1 198.125 401.625 Tm(Boyer-Moore) Tj1 0 0 1 255.5 401.625 Tm(technique) Tj1 0 0 1 297.25 401.625 Tm(with) Tj1 0 0 1 317.75 401.625 Tm(the) Tj1 0 0 1 332.75 401.625 Tm(Aho-Corasick) Tj1 0 0 1 391.75 401.625 Tm(algorithm.) Tj1 0 0 1 438.375 401.625 Tm(The) Tj1 0 0 1 456.75 401.625 Tm(Commentz-) Tj1 0 0 1 72 386.625 Tm(Walter) Tj1 0 0 1 104.625 386.625 Tm(algorithm) Tj1 0 0 1 148.75 386.625 Tm(is) Tj1 0 0 1 160.625 386.625 Tm(substantially) Tj1 0 0 1 216.375 386.625 Tm(faster) Tj1 0 0 1 244 386.625 Tm(than) Tj1 0 0 1 266.5 386.625 Tm(the) Tj1 0 0 1 284 386.625 Tm(Aho-Corasick) Tj1 0 0 1 345.5 386.625 Tm(algorithm) Tj1 0 0 1 389.75 386.625 Tm(in) Tj1 0 0 1 402.875 386.625 Tm(practice.) Tj1 0 0 1 445.125 386.625 Tm(Hume) Tj1 0 0 1 475 386.625 Tm([Hu91]) Tj1 0 0 1 72 371.625 Tm(designed) Tj1 0 0 1 110.75 371.625 Tm(a) Tj1 0 0 1 118.375 371.625 Tm(tool) Tj1 0 0 1 137 371.625 Tm(called) Tj/R26 10 Tf1 0 0 1 164 371.625 Tm(gre) Tj/R23 10 Tf1 0 0 1 180.375 371.625 Tm(based) Tj1 0 0 1 206.25 371.625 Tm(on) Tj1 0 0 1 219.25 371.625 Tm(this) Tj1 0 0 1 236.625 371.625 Tm(algorithm,) Tj1 0 0 1 281 371.625 Tm(and) Tj1 0 0 1 298.5 371.625 Tm(version) Tj1 0 0 1 331 371.625 Tm(2.0) Tj1 0 0 1 346.5 371.625 Tm(of) Tj/R26 10 Tf1 0 0 1 357.875 371.625 Tm(fgrep) Tj/R23 10 Tf1 0 0 1 382 371.625 Tm(by) Tj1 0 0 1 395 371.625 Tm(the) Tj1 0 0 1 410.25 371.625 Tm(GNU) Tj1 0 0 1 435 371.625 Tm(project) Tj1 0 0 1 465.875 371.625 Tm([Ha93]) Tj1 0 0 1 497.375 371.625 Tm(is) Tj1 0 0 1 72 356.625 Tm(using) Tj1 0 0 1 96.75 356.625 Tm(it.) Tj1 0 0 1 110.375 356.625 Tm(Baeza-Yates) Tj1 0 0 1 164.375 356.625 Tm([Ba89]) Tj1 0 0 1 195.375 356.625 Tm(also) Tj1 0 0 1 214.625 356.625 Tm(gave) Tj1 0 0 1 236.75 356.625 Tm(an) Tj1 0 0 1 249.375 356.625 Tm(algorithm) Tj1 0 0 1 291.375 356.625 Tm(that) Tj1 0 0 1 309.5 356.625 Tm(combines) Tj1 0 0 1 351.125 356.625 Tm(the) Tj1 0 0 1 366.625 356.625 Tm(Boyer-Moore-Horspool) Tj1 0 0 1 465.125 356.625 Tm(algorithm) Tj1 0 0 1 72 341.625 Tm([Ho80]) Tj1 0 0 1 104.5 341.625 Tm(\(which) Tj1 0 0 1 135.875 341.625 Tm(is) Tj1 0 0 1 146 341.625 Tm(a) Tj1 0 0 1 154 341.625 Tm(slight) Tj1 0 0 1 179.625 341.625 Tm(variation) Tj1 0 0 1 218.625 341.625 Tm(of) Tj1 0 0 1 230.375 341.625 Tm(the) Tj1 0 0 1 246 341.625 Tm(classical) Tj1 0 0 1 283.375 341.625 Tm(Boyer-Moore) Tj1 0 0 1 341.375 341.625 Tm(algorithm\)) Tj1 0 0 1 387 341.625 Tm(with) Tj1 0 0 1 408.125 341.625 Tm(the) Tj1 0 0 1 423.75 341.625 Tm(Aho-Corasick) Tj1 0 0 1 483.375 341.625 Tm(algo-) Tj1 0 0 1 72 326.625 Tm(rithm.) Tj1 0 0 1 97 307.5 Tm(We) Tj1 0 0 1 113.625 307.5 Tm(present) Tj1 0 0 1 145.25 307.5 Tm(a) Tj1 0 0 1 152.5 307.5 Tm(different) Tj1 0 0 1 189.875 307.5 Tm(approach) Tj1 0 0 1 229.5 307.5 Tm(that) Tj1 0 0 1 247.25 307.5 Tm(also) Tj1 0 0 1 266.125 307.5 Tm(uses) Tj1 0 0 1 286.125 307.5 Tm(the) Tj1 0 0 1 301.125 307.5 Tm(ideas) Tj1 0 0 1 324.5 307.5 Tm(of) Tj1 0 0 1 335.625 307.5 Tm(Boyer) Tj1 0 0 1 362.875 307.5 Tm(and) Tj1 0 0 1 380.125 307.5 Tm(Moore.) Tj1 0 0 1 414.625 307.5 Tm(Our) Tj1 0 0 1 433 307.5 Tm(algorithm) Tj1 0 0 1 474.625 307.5 Tm(is) Tj1 0 0 1 484 307.5 Tm(quite) Tj1 0 0 1 72 292.5 Tm(simple,) Tj1 0 0 1 103.75 292.5 Tm(and) Tj1 0 0 1 120.75 292.5 Tm(the) Tj1 0 0 1 135.5 292.5 Tm(main) Tj1 0 0 1 158 292.5 Tm(engine) Tj1 0 0 1 187.25 292.5 Tm(of) Tj1 0 0 1 198.125 292.5 Tm(it) Tj1 0 0 1 206.125 292.5 Tm(is) Tj1 0 0 1 215.25 292.5 Tm(given) Tj1 0 0 1 240 292.5 Tm(later) Tj1 0 0 1 260.375 292.5 Tm(in) Tj1 0 0 1 270.625 292.5 Tm(the) Tj1 0 0 1 285.375 292.5 Tm(paper.) Tj1 0 0 1 315.25 292.5 Tm(An) Tj1 0 0 1 330 292.5 Tm(earlier) Tj1 0 0 1 358.25 292.5 Tm(version) Tj1 0 0 1 390.25 292.5 Tm(of) Tj1 0 0 1 401.125 292.5 Tm(this) Tj1 0 0 1 418 292.5 Tm(algorithm) Tj1 0 0 1 459.375 292.5 Tm(was) Tj1 0 0 1 477.5 292.5 Tm(part) Tj1 0 0 1 495.625 292.5 Tm(of) Tj1 0 0 1 72 277.5 Tm(the) Tj1 0 0 1 89.625 277.5 Tm(second) Tj1 0 0 1 122.875 277.5 Tm(version) Tj1 0 0 1 157.75 277.5 Tm(of) Tj/R26 10 Tf1 0 0 1 171.5 277.5 Tm(agrep) Tj/R23 10 Tf1 0 0 1 200.25 277.5 Tm([WM92a,) Tj1 0 0 1 244.375 277.5 Tm(WM92b],) Tj1 0 0 1 289 277.5 Tm(although) Tj1 0 0 1 329.375 277.5 Tm(the) Tj1 0 0 1 347 277.5 Tm(algorithm) Tj1 0 0 1 391.25 277.5 Tm(has) Tj1 0 0 1 410 277.5 Tm(not) Tj1 0 0 1 428.125 277.5 Tm(been) Tj1 0 0 1 452.5 277.5 Tm(discussed) Tj1 0 0 1 496.25 277.5 Tm(in) Tj1 0 0 1 72 262.5 Tm([WM92b]) Tj1 0 0 1 115.5 262.5 Tm(and) Tj1 0 0 1 133.375 262.5 Tm(only) Tj1 0 0 1 154.5 262.5 Tm(brie\257y) Tj1 0 0 1 184 262.5 Tm(in) Tj1 0 0 1 195.125 262.5 Tm([WM92a].) Tj1 0 0 1 243.125 262.5 Tm(The) Tj1 0 0 1 262.125 262.5 Tm(current) Tj1 0 0 1 294 262.5 Tm(version) Tj1 0 0 1 326.875 262.5 Tm(is) Tj1 0 0 1 336.875 262.5 Tm(used) Tj1 0 0 1 358.625 262.5 Tm(in) Tj/R26 10 Tf1 0 0 1 369.625 262.5 Tm(glimpse) Tj/R23 10 Tf1 0 0 1 404 262.5 Tm([MW94].) Tj1 0 0 1 447.375 262.5 Tm(The) Tj1 0 0 1 466.25 262.5 Tm(design) Tj1 0 0 1 495.625 262.5 Tm(of) Tj1 0 0 1 72 247.5 Tm(the) Tj1 0 0 1 87.125 247.5 Tm(algorithm) Tj1 0 0 1 128.875 247.5 Tm(concentrates) Tj1 0 0 1 182 247.5 Tm(on) Tj1 0 0 1 194.875 247.5 Tm(typical) Tj1 0 0 1 225 247.5 Tm(searches) Tj1 0 0 1 262 247.5 Tm(rather) Tj1 0 0 1 288.375 247.5 Tm(than) Tj1 0 0 1 308.5 247.5 Tm(on) Tj1 0 0 1 321.375 247.5 Tm(worst-case) Tj1 0 0 1 367.25 247.5 Tm(behavior.) Tj1 0 0 1 410.25 247.5 Tm(This) Tj1 0 0 1 430.875 247.5 Tm(allows) Tj1 0 0 1 459.875 247.5 Tm(us) Tj1 0 0 1 471.625 247.5 Tm(to) Tj1 0 0 1 482.25 247.5 Tm(make) Tj1 0 0 1 72 232.5 Tm(some) Tj1 0 0 1 97 232.5 Tm(engineering) Tj1 0 0 1 148.25 232.5 Tm(decisions) Tj1 0 0 1 189.375 232.5 Tm(that) Tj1 0 0 1 208.125 232.5 Tm(we) Tj1 0 0 1 223.625 232.5 Tm(believe) Tj1 0 0 1 256.375 232.5 Tm(are) Tj1 0 0 1 272.5 232.5 Tm(crucial) Tj1 0 0 1 303.625 232.5 Tm(to) Tj1 0 0 1 315.125 232.5 Tm(making) Tj1 0 0 1 348.875 232.5 Tm(the) Tj1 0 0 1 364.875 232.5 Tm(algorithm) Tj1 0 0 1 407.5 232.5 Tm(signi\256cantly) Tj1 0 0 1 460.625 232.5 Tm(faster) Tj1 0 0 1 486.75 232.5 Tm(than) Tj1 0 0 1 72 217.5 Tm(other) Tj1 0 0 1 95.125 217.5 Tm(algorithms) Tj1 0 0 1 140.375 217.5 Tm(in) Tj1 0 0 1 150.625 217.5 Tm(practice.) Tj1 0 0 1 97 198.375 Tm(We) Tj1 0 0 1 114.25 198.375 Tm(start) Tj1 0 0 1 134.75 198.375 Tm(by) Tj1 0 0 1 148 198.375 Tm(describing) Tj1 0 0 1 193 198.375 Tm(the) Tj1 0 0 1 208.5 198.375 Tm(algorithm) Tj1 0 0 1 250.625 198.375 Tm(in) Tj1 0 0 1 261.625 198.375 Tm(detail.) Tj1 0 0 1 292.125 198.375 Tm(Section) Tj1 0 0 1 325.5 198.375 Tm(3) Tj1 0 0 1 333.875 198.375 Tm(contains) Tj1 0 0 1 370.625 198.375 Tm(a) Tj1 0 0 1 378.5 198.375 Tm(rough) Tj1 0 0 1 405.25 198.375 Tm(analysis) Tj1 0 0 1 440.875 198.375 Tm(of) Tj1 0 0 1 452.625 198.375 Tm(the) Tj1 0 0 1 468.25 198.375 Tm(expected) Tj1 0 0 1 72 183.375 Tm(running) Tj1 0 0 1 106 183.375 Tm(time,) Tj1 0 0 1 129.125 183.375 Tm(and) Tj1 0 0 1 146.5 183.375 Tm(experimental) Tj1 0 0 1 201.75 183.375 Tm(results) Tj1 0 0 1 230.75 183.375 Tm(comparing) Tj1 0 0 1 276.5 183.375 Tm(our) Tj1 0 0 1 292.75 183.375 Tm(algorithm) Tj1 0 0 1 334.5 183.375 Tm(to) Tj1 0 0 1 345.125 183.375 Tm(three) Tj1 0 0 1 368.125 183.375 Tm(others.) Tj1 0 0 1 400.5 183.375 Tm(The) Tj1 0 0 1 419 183.375 Tm(last) Tj1 0 0 1 435.625 183.375 Tm(section) Tj1 0 0 1 466.75 183.375 Tm(discusses) Tj1 0 0 1 72 168.375 Tm(applications) Tj1 0 0 1 122.875 168.375 Tm(of) Tj1 0 0 1 133.75 168.375 Tm(multi-pattern) Tj1 0 0 1 188.5 168.375 Tm(matching.) TjETQendstreamendobj35 0 obj17129endobj36 0 obj>>/Contents [18 0 R21 0 R24 0 R27 0 R31 0 R34 0 R]>>endobj37 0 obj>endobj38 0 obj>streamqBT/R37 10 Tf1 0 0 1 285.5 705 Tm(3) TjETendstreamendobj39 0 obj47endobj40 0 obj>endobj41 0 obj>streamBT/R40 14 Tf1 0 0 1 72 669 Tm(2.) Tj1 0 0 1 91.375 669 Tm(The) Tj1 0 0 1 120 669 Tm(Algorithm) Tj/R40 12 Tf1 0 0 1 72 639 Tm(2.1.) Tj1 0 0 1 98.75 639 Tm(Outline) Tj1 0 0 1 143.625 639 Tm(of) Tj1 0 0 1 158.375 639 Tm(the) Tj1 0 0 1 179.75 639 Tm(Algorithm) TjETendstreamendobj42 0 obj281endobj43 0 obj>endobj44 0 obj>streamBT/R43 10 Tf1 0 0 1 72 619.875 Tm(The) Tj1 0 0 1 90.375 619.875 Tm(basic) Tj1 0 0 1 113.75 619.875 Tm(idea) Tj1 0 0 1 133.25 619.875 Tm(of) Tj1 0 0 1 144.375 619.875 Tm(the) Tj1 0 0 1 159.375 619.875 Tm(Boyer-Moore) Tj1 0 0 1 216.875 619.875 Tm(string-matching) Tj1 0 0 1 283.125 619.875 Tm(algorithm) Tj1 0 0 1 324.875 619.875 Tm([BM77]) Tj1 0 0 1 360 619.875 Tm(is) Tj1 0 0 1 369.5 619.875 Tm(as) Tj1 0 0 1 380.75 619.875 Tm(follows.) Tj1 0 0 1 418.625 619.875 Tm(Suppose) Tj1 0 0 1 455.375 619.875 Tm(that) Tj1 0 0 1 473.25 619.875 Tm(the) Tj1 0 0 1 488.375 619.875 Tm(pat-) Tj1 0 0 1 72 604.875 Tm(tern) Tj1 0 0 1 90.25 604.875 Tm(is) Tj1 0 0 1 99.5 604.875 Tm(of) Tj1 0 0 1 110.5 604.875 Tm(length) TjETendstreamendobj45 0 obj751endobj46 0 obj>endobj47 0 obj>streamBT/R46 10 Tf1 0 0 1 138.125 604.875 Tm(m) Tj/R43 10 Tf1 0 0 1 145.375 604.875 Tm(.) Tj1 0 0 1 153 604.875 Tm(We) Tj1 0 0 1 169.625 604.875 Tm(start) Tj1 0 0 1 189.5 604.875 Tm(by) Tj1 0 0 1 202.125 604.875 Tm(comparing) Tj1 0 0 1 247.625 604.875 Tm(the) Tj/R46 10 Tf1 0 0 1 262.5 604.875 Tm(last) Tj/R43 10 Tf1 0 0 1 279.5 604.875 Tm(character) Tj1 0 0 1 319.125 604.875 Tm(of) Tj1 0 0 1 330.125 604.875 Tm(the) Tj1 0 0 1 345 604.875 Tm(pattern) Tj1 0 0 1 375.5 604.875 Tm(against) Tj/R46 10 Tf1 0 0 1 406.5 604.875 Tm(t) Tj/R46 7 Tf1 0 0 1 409.25 602.875 Tm(m) Tj/R43 10 Tf1 0 0 1 415 604.875 Tm(,) Tj1 0 0 1 420.125 604.875 Tm(the) Tj/R46 10 Tf1 0 0 1 435 604.875 Tm(m) Tj/R43 10 Tf1 0 0 1 442.25 604.875 Tm('th) Tj1 0 0 1 456 604.875 Tm(character) Tj1 0 0 1 495.625 604.875 Tm(of) Tj1 0 0 1 72 589.875 Tm(the) Tj1 0 0 1 87.625 589.875 Tm(text.) Tj1 0 0 1 111 589.875 Tm(If) Tj1 0 0 1 121.125 589.875 Tm(there) Tj1 0 0 1 144.625 589.875 Tm(is) Tj1 0 0 1 154.625 589.875 Tm(a) Tj1 0 0 1 162.5 589.875 Tm(mismatch) Tj1 0 0 1 204.75 589.875 Tm(\(and) Tj1 0 0 1 226 589.875 Tm(in) Tj1 0 0 1 237.125 589.875 Tm(most) Tj1 0 0 1 259.875 589.875 Tm(texts) Tj1 0 0 1 282.125 589.875 Tm(the) Tj1 0 0 1 297.75 589.875 Tm(likelihood) Tj1 0 0 1 341.625 589.875 Tm(of) Tj1 0 0 1 353.375 589.875 Tm(a) Tj1 0 0 1 361.25 589.875 Tm(mismatch) Tj1 0 0 1 403.625 589.875 Tm(is) Tj1 0 0 1 413.75 589.875 Tm(much) Tj1 0 0 1 439.5 589.875 Tm(greater) Tj1 0 0 1 471 589.875 Tm(than) Tj1 0 0 1 491.75 589.875 Tm(the) Tj1 0 0 1 72 574.875 Tm(likelihood) Tj1 0 0 1 115.875 574.875 Tm(of) Tj1 0 0 1 127.625 574.875 Tm(a) Tj1 0 0 1 135.5 574.875 Tm(match\),) Tj1 0 0 1 169.25 574.875 Tm(then) Tj1 0 0 1 189.875 574.875 Tm(we) Tj1 0 0 1 205 574.875 Tm(determine) Tj1 0 0 1 248.5 574.875 Tm(the) Tj1 0 0 1 264.125 574.875 Tm(rightmost) Tj0.00451375 Tw1 0 0 1 305.75 574.875 Tm(occurrence) Tj0 Tw1 0 0 1 353.375 574.875 Tm(of) Tj/R46 10 Tf1 0 0 1 365.125 574.875 Tm(t) Tj/R46 7 Tf1 0 0 1 367.875 572.875 Tm(m) Tj/R43 10 Tf1 0 0 1 377 574.875 Tm(in) Tj1 0 0 1 388.125 574.875 Tm(the) Tj1 0 0 1 403.75 574.875 Tm(pattern) Tj1 0 0 1 435 574.875 Tm(and) Tj1 0 0 1 452.75 574.875 Tm(shift) Tj1 0 0 1 473.75 574.875 Tm(accord-) Tj1 0 0 1 72 559.875 Tm(ingly.) Tj1 0 0 1 100.25 559.875 Tm(For) Tj1 0 0 1 116.875 559.875 Tm(example,) Tj1 0 0 1 156.125 559.875 Tm(if) Tj/R46 10 Tf1 0 0 1 165 559.875 Tm(t) Tj/R46 7 Tf1 0 0 1 167.75 557.875 Tm(m) Tj/R43 10 Tf1 0 0 1 176.25 559.875 Tm(does) Tj1 0 0 1 197.375 559.875 Tm(not) Tj1 0 0 1 212.875 559.875 Tm(appear) Tj1 0 0 1 242.5 559.875 Tm(in) Tj1 0 0 1 253 559.875 Tm(the) Tj1 0 0 1 268 559.875 Tm(pattern) Tj1 0 0 1 298.625 559.875 Tm(at) Tj1 0 0 1 308.625 559.875 Tm(all,) Tj1 0 0 1 323.875 559.875 Tm(then) Tj1 0 0 1 343.875 559.875 Tm(we) Tj1 0 0 1 358.375 559.875 Tm(can) Tj1 0 0 1 375.25 559.875 Tm(safely) Tj1 0 0 1 402.125 559.875 Tm(shift) Tj1 0 0 1 422.75 559.875 Tm(by) Tj/R46 10 Tf1 0 0 1 435.625 559.875 Tm(m) Tj/R43 10 Tf1 0 0 1 445.75 559.875 Tm(characters) Tj1 0 0 1 489.5 559.875 Tm(and) Tj1 0 0 1 72 544.875 Tm(look) Tj1 0 0 1 92.875 544.875 Tm(next) Tj1 0 0 1 113.25 544.875 Tm(at) Tj/R46 10 Tf1 0 0 1 123.625 544.875 Tm(t) Tj/R43 7 Tf1 0 0 1 127.5 542.875 Tm(2) Tj/R46 7 Tf1 0 0 1 131 542.875 Tm(m) Tj/R43 10 Tf1 0 0 1 136.75 544.875 Tm(;) Tj1 0 0 1 142.625 544.875 Tm(if) Tj/R46 10 Tf1 0 0 1 151.875 544.875 Tm(t) Tj/R46 7 Tf1 0 0 1 154.625 542.875 Tm(m) Tj/R43 10 Tf1 0 0 1 163.5 544.875 Tm(matches) Tj1 0 0 1 199.5 544.875 Tm(only) Tj1 0 0 1 220.375 544.875 Tm(the) Tj1 0 0 1 235.75 544.875 Tm(4th) Tj1 0 0 1 251.5 544.875 Tm(character) Tj1 0 0 1 291.5 544.875 Tm(of) Tj1 0 0 1 302.875 544.875 Tm(the) Tj1 0 0 1 318.125 544.875 Tm(pattern,) Tj1 0 0 1 351.5 544.875 Tm(then) Tj1 0 0 1 371.75 544.875 Tm(we) Tj1 0 0 1 386.5 544.875 Tm(can) Tj1 0 0 1 403.5 544.875 Tm(shift) Tj1 0 0 1 424.25 544.875 Tm(by) Tj/R46 10 Tf1 0 0 1 437.25 544.875 Tm(m) TjETendstreamendobj48 0 obj4127endobj49 0 obj]>>stream0Ee$C!.Y=~>endstreamendobj50 0 obj12endobj51 0 obj>streamq5.5 0 0 -0.6 445.9 547.9 cm/R49 DoQBT/R43 10 Tf1 0 0 1 451.625 544.875 Tm(4,) Tj1 0 0 1 462.125 544.875 Tm(and) Tj1 0 0 1 479.625 544.875 Tm(so) Tj1 0 0 1 491.5 544.875 Tm(on.) Tj1 0 0 1 72 529.875 Tm(In) Tj1 0 0 1 83.5 529.875 Tm(natural) Tj1 0 0 1 114.5 529.875 Tm(language) Tj1 0 0 1 153.875 529.875 Tm(texts,) Tj1 0 0 1 178.375 529.875 Tm(shifts) Tj1 0 0 1 203.125 529.875 Tm(of) Tj1 0 0 1 214.625 529.875 Tm(size) Tj/R46 10 Tf1 0 0 1 233.5 529.875 Tm(m) Tj/R43 10 Tf1 0 0 1 244 529.875 Tm(or) Tj1 0 0 1 255.625 529.875 Tm(close) Tj1 0 0 1 279.5 529.875 Tm(to) Tj1 0 0 1 290.5 529.875 Tm(it) Tj1 0 0 1 299.25 529.875 Tm(will) Tj1 0 0 1 318 529.875 Tm(occur) Tj1 0 0 1 343.625 529.875 Tm(most) Tj1 0 0 1 366.25 529.875 Tm(of) Tj1 0 0 1 377.875 529.875 Tm(the) Tj1 0 0 1 393.375 529.875 Tm(time,) Tj1 0 0 1 416.875 529.875 Tm(leading) Tj1 0 0 1 449.625 529.875 Tm(to) Tj1 0 0 1 460.625 529.875 Tm(a) Tj1 0 0 1 468.375 529.875 Tm(very) Tj1 0 0 1 489.5 529.875 Tm(fast) Tj1 0 0 1 72 514.875 Tm(algorithm.) Tj1 0 0 1 119.25 514.875 Tm(We) Tj1 0 0 1 136.625 514.875 Tm(want) Tj1 0 0 1 159.5 514.875 Tm(to) Tj1 0 0 1 170.625 514.875 Tm(use) Tj1 0 0 1 187.375 514.875 Tm(the) Tj1 0 0 1 203 514.875 Tm(same) Tj1 0 0 1 227 514.875 Tm(idea) Tj1 0 0 1 247.125 514.875 Tm(for) Tj1 0 0 1 262.25 514.875 Tm(the) Tj1 0 0 1 277.875 514.875 Tm(multi-pattern) Tj1 0 0 1 333.5 514.875 Tm(matching) Tj1 0 0 1 374.125 514.875 Tm(problem.) Tj1 0 0 1 415.875 514.875 Tm(However,) Tj1 0 0 1 458.625 514.875 Tm(if) Tj1 0 0 1 468.125 514.875 Tm(there) Tj1 0 0 1 491.625 514.875 Tm(are) Tj1 0 0 1 72 499.875 Tm(many) Tj1 0 0 1 96.875 499.875 Tm(patterns,) Tj1 0 0 1 133.75 499.875 Tm(and) Tj1 0 0 1 150.875 499.875 Tm(we) Tj1 0 0 1 165.25 499.875 Tm(would) Tj1 0 0 1 192.875 499.875 Tm(like) Tj1 0 0 1 210.5 499.875 Tm(to) Tj1 0 0 1 220.875 499.875 Tm(support) Tj1 0 0 1 253.5 499.875 Tm(tens) Tj1 0 0 1 272.25 499.875 Tm(of) Tj1 0 0 1 283.25 499.875 Tm(thousands) Tj1 0 0 1 325.875 499.875 Tm(of) Tj1 0 0 1 336.875 499.875 Tm(patterns,) Tj1 0 0 1 373.75 499.875 Tm(chances) Tj1 0 0 1 408.25 499.875 Tm(are) Tj1 0 0 1 423.25 499.875 Tm(that) Tj1 0 0 1 441 499.875 Tm(most) Tj1 0 0 1 463.125 499.875 Tm(characters) Tj1 0 0 1 72 484.875 Tm(in) Tj1 0 0 1 82.375 484.875 Tm(the) Tj1 0 0 1 97.25 484.875 Tm(text) Tj1 0 0 1 114.875 484.875 Tm(match) Tj1 0 0 1 142 484.875 Tm(the) Tj1 0 0 1 156.875 484.875 Tm(last) Tj1 0 0 1 173.375 484.875 Tm(character) Tj1 0 0 1 213 484.875 Tm(of) Tj1 0 0 1 224 484.875 Tm(some) Tj1 0 0 1 247.75 484.875 Tm(pattern,) Tj1 0 0 1 280.75 484.875 Tm(so) Tj1 0 0 1 292.25 484.875 Tm(there) Tj1 0 0 1 315 484.875 Tm(would) Tj1 0 0 1 342.625 484.875 Tm(be) Tj1 0 0 1 354.75 484.875 Tm(few) Tj1 0 0 1 372.5 484.875 Tm(if) Tj1 0 0 1 381.25 484.875 Tm(any) Tj1 0 0 1 398.375 484.875 Tm(such) Tj1 0 0 1 419.25 484.875 Tm(shifts.) Tj1 0 0 1 448.375 484.875 Tm(We) Tj1 0 0 1 464.875 484.875 Tm(will) Tj1 0 0 1 482.875 484.875 Tm(show) Tj1 0 0 1 72 469.875 Tm(how) Tj1 0 0 1 91.75 469.875 Tm(to) Tj1 0 0 1 102 469.875 Tm(overcome) Tj1 0 0 1 144.125 469.875 Tm(this) Tj1 0 0 1 161 469.875 Tm(problem) Tj1 0 0 1 196.875 469.875 Tm(and) Tj1 0 0 1 213.875 469.875 Tm(keep) Tj1 0 0 1 235.375 469.875 Tm(the) Tj1 0 0 1 250.125 469.875 Tm(essence) Tj1 0 0 1 283.375 469.875 Tm(\(and) Tj1 0 0 1 303.75 469.875 Tm(speed\)) Tj1 0 0 1 332.5 469.875 Tm(of) Tj1 0 0 1 343.375 469.875 Tm(the) Tj1 0 0 1 358.125 469.875 Tm(Boyer-Moore) Tj1 0 0 1 415.25 469.875 Tm(algorithm.) Tj1 0 0 1 97 450.75 Tm(The) Tj1 0 0 1 115.75 450.75 Tm(\256rst) Tj1 0 0 1 134.375 450.75 Tm(stage) Tj1 0 0 1 158.125 450.75 Tm(is) Tj1 0 0 1 167.875 450.75 Tm(a) Tj1 0 0 1 175.5 450.75 Tm(preprocessing) Tj1 0 0 1 234.375 450.75 Tm(of) Tj1 0 0 1 245.875 450.75 Tm(the) Tj1 0 0 1 261.25 450.75 Tm(set) Tj1 0 0 1 275.5 450.75 Tm(of) Tj1 0 0 1 287 450.75 Tm(patterns.) Tj1 0 0 1 326.875 450.75 Tm(Applications) Tj1 0 0 1 381.125 450.75 Tm(that) Tj1 0 0 1 399.25 450.75 Tm(use) Tj1 0 0 1 415.75 450.75 Tm(a) Tj1 0 0 1 423.375 450.75 Tm(\256xed) Tj1 0 0 1 446.5 450.75 Tm(set) Tj1 0 0 1 460.75 450.75 Tm(of) Tj1 0 0 1 472.25 450.75 Tm(patterns) Tj1 0 0 1 72 435.75 Tm(for) Tj1 0 0 1 87.125 435.75 Tm(many) Tj1 0 0 1 112.75 435.75 Tm(searches) Tj1 0 0 1 150.25 435.75 Tm(may) Tj1 0 0 1 170.875 435.75 Tm(bene\256t) Tj1 0 0 1 201.5 435.75 Tm(from) Tj1 0 0 1 224.375 435.75 Tm(saving) Tj1 0 0 1 253.875 435.75 Tm(the) Tj1 0 0 1 269.5 435.75 Tm(preprocessing) Tj1 0 0 1 328.625 435.75 Tm(results) Tj1 0 0 1 358.125 435.75 Tm(in) Tj1 0 0 1 369.25 435.75 Tm(a) Tj1 0 0 1 377 435.75 Tm(\256le) Tj1 0 0 1 393 435.75 Tm(\(or) Tj1 0 0 1 408 435.75 Tm(even) Tj1 0 0 1 430.25 435.75 Tm(in) Tj1 0 0 1 441.25 435.75 Tm(memory\).) Tj1 0 0 1 486.25 435.75 Tm(This) Tj1 0 0 1 72 420.75 Tm(step) Tj1 0 0 1 91.25 420.75 Tm(is) Tj1 0 0 1 101 420.75 Tm(quite) Tj1 0 0 1 124.125 420.75 Tm(ef\256cient,) Tj1 0 0 1 162.625 420.75 Tm(however,) Tj1 0 0 1 202.875 420.75 Tm(and) Tj1 0 0 1 220.5 420.75 Tm(for) Tj1 0 0 1 235.375 420.75 Tm(most) Tj1 0 0 1 257.875 420.75 Tm(cases) Tj1 0 0 1 282.25 420.75 Tm(it) Tj1 0 0 1 290.875 420.75 Tm(can) Tj1 0 0 1 308 420.75 Tm(be) Tj1 0 0 1 320.625 420.75 Tm(done) Tj1 0 0 1 343.25 420.75 Tm(on) Tj1 0 0 1 356.375 420.75 Tm(the) Tj1 0 0 1 371.75 420.75 Tm(\257y.) Tj1 0 0 1 390.375 420.75 Tm(Three) Tj1 0 0 1 417 420.75 Tm(tables) Tj1 0 0 1 443.625 420.75 Tm(are) Tj1 0 0 1 459.25 420.75 Tm(built) Tj1 0 0 1 480.75 420.75 Tm(in) Tj1 0 0 1 491.75 420.75 Tm(the) Tj1 0 0 1 72 405.75 Tm(preprocessing) Tj1 0 0 1 131 405.75 Tm(stage,) Tj1 0 0 1 157.375 405.75 Tm(a) Tj1 0 0 1 165.125 405.75 Tm(SHIFT) Tj1 0 0 1 196.125 405.75 Tm(table,) Tj1 0 0 1 221.375 405.75 Tm(a) Tj1 0 0 1 229.125 405.75 Tm(HASH) Tj1 0 0 1 259.625 405.75 Tm(table,) Tj1 0 0 1 284.875 405.75 Tm(and) Tj1 0 0 1 302.625 405.75 Tm(a) Tj1 0 0 1 310.375 405.75 Tm(PREFIX) Tj1 0 0 1 348 405.75 Tm(table.) Tj1 0 0 1 375.75 405.75 Tm(The) Tj1 0 0 1 394.625 405.75 Tm(SHIFT) Tj1 0 0 1 425.5 405.75 Tm(table) Tj1 0 0 1 448.125 405.75 Tm(is) Tj1 0 0 1 457.875 405.75 Tm(similar,) Tj1 0 0 1 491.25 405.75 Tm(but) Tj1 0 0 1 72 390.75 Tm(not) Tj1 0 0 1 88.125 390.75 Tm(exactly) Tj1 0 0 1 120.5 390.75 Tm(the) Tj1 0 0 1 136.125 390.75 Tm(same,) Tj1 0 0 1 162.625 390.75 Tm(to) Tj1 0 0 1 173.75 390.75 Tm(the) Tj1 0 0 1 189.375 390.75 Tm(regular) Tj1 0 0 1 221.25 390.75 Tm(shift) Tj1 0 0 1 242.5 390.75 Tm(table) Tj1 0 0 1 265.5 390.75 Tm(in) Tj1 0 0 1 276.75 390.75 Tm(a) Tj1 0 0 1 284.75 390.75 Tm(Boyer-Moore) Tj1 0 0 1 342.875 390.75 Tm(type) Tj1 0 0 1 363.625 390.75 Tm(algorithm.) Tj1 0 0 1 411 390.75 Tm(It) Tj1 0 0 1 420.625 390.75 Tm(is) Tj1 0 0 1 430.75 390.75 Tm(used) Tj1 0 0 1 452.625 390.75 Tm(to) Tj1 0 0 1 463.875 390.75 Tm(determine) Tj1 0 0 1 72 375.75 Tm(how) Tj1 0 0 1 92.375 375.75 Tm(many) Tj1 0 0 1 117.75 375.75 Tm(characters) Tj1 0 0 1 161.75 375.75 Tm(in) Tj1 0 0 1 172.625 375.75 Tm(the) Tj1 0 0 1 188 375.75 Tm(text) Tj1 0 0 1 206.125 375.75 Tm(can) Tj1 0 0 1 223.25 375.75 Tm(be) Tj1 0 0 1 235.875 375.75 Tm(shifted) Tj1 0 0 1 266.25 375.75 Tm(\(skipped\)) Tj1 0 0 1 307.25 375.75 Tm(when) Tj1 0 0 1 332.125 375.75 Tm(the) Tj1 0 0 1 347.5 375.75 Tm(text) Tj1 0 0 1 365.625 375.75 Tm(is) Tj1 0 0 1 375.375 375.75 Tm(scanned.) Tj1 0 0 1 415.875 375.75 Tm(The) Tj1 0 0 1 434.625 375.75 Tm(HASH) Tj1 0 0 1 464.875 375.75 Tm(and) Tj1 0 0 1 482.375 375.75 Tm(PRE-) Tj1 0 0 1 72 360.75 Tm(FIX) Tj1 0 0 1 91 360.75 Tm(tables) Tj1 0 0 1 117.25 360.75 Tm(are) Tj1 0 0 1 132.5 360.75 Tm(used) Tj1 0 0 1 153.75 360.75 Tm(when) Tj1 0 0 1 178.375 360.75 Tm(the) Tj1 0 0 1 193.5 360.75 Tm(shift) Tj1 0 0 1 214.125 360.75 Tm(value) Tj1 0 0 1 238.75 360.75 Tm(is) Tj1 0 0 1 248.25 360.75 Tm(0.) Tj1 0 0 1 261.125 360.75 Tm(They) Tj1 0 0 1 284.625 360.75 Tm(are) Tj1 0 0 1 300 360.75 Tm(used) Tj1 0 0 1 321.375 360.75 Tm(to) Tj1 0 0 1 332.125 360.75 Tm(determine) Tj1 0 0 1 375.25 360.75 Tm(which) Tj1 0 0 1 402.75 360.75 Tm(pattern) Tj1 0 0 1 433.625 360.75 Tm(is) Tj1 0 0 1 443.25 360.75 Tm(a) Tj1 0 0 1 450.75 360.75 Tm(candidate) Tj1 0 0 1 492.25 360.75 Tm(for) Tj1 0 0 1 72 345.75 Tm(the) Tj1 0 0 1 86.75 345.75 Tm(match) Tj1 0 0 1 113.75 345.75 Tm(and) Tj1 0 0 1 130.75 345.75 Tm(to) Tj1 0 0 1 141 345.75 Tm(verify) Tj1 0 0 1 167.5 345.75 Tm(the) Tj1 0 0 1 182.25 345.75 Tm(match.) Tj1 0 0 1 214.25 345.75 Tm(Exact) Tj1 0 0 1 239.625 345.75 Tm(details) Tj1 0 0 1 268.25 345.75 Tm(are) Tj1 0 0 1 283.125 345.75 Tm(given) Tj1 0 0 1 307.875 345.75 Tm(next.) Tj/R40 12 Tf1 0 0 1 72 315.75 Tm(2.2.) Tj1 0 0 1 98.75 315.75 Tm(The) Tj1 0 0 1 123.5 315.75 Tm(Preprocessing) Tj1 0 0 1 210.125 315.75 Tm(Stage) Tj/R43 10 Tf1 0 0 1 97 296.625 Tm(The) Tj1 0 0 1 116 296.625 Tm(\256rst) Tj1 0 0 1 134.875 296.625 Tm(thing) Tj1 0 0 1 158.75 296.625 Tm(we) Tj1 0 0 1 173.875 296.625 Tm(do) Tj1 0 0 1 187.25 296.625 Tm(is) Tj1 0 0 1 197.25 296.625 Tm(compute) Tj1 0 0 1 235.125 296.625 Tm(the) Tj1 0 0 1 250.75 296.625 Tm(minimum) Tj1 0 0 1 292.875 296.625 Tm(length) Tj1 0 0 1 321.25 296.625 Tm(of) Tj1 0 0 1 333 296.625 Tm(a) Tj1 0 0 1 340.875 296.625 Tm(pattern,) Tj1 0 0 1 374.75 296.625 Tm(call) Tj1 0 0 1 392.75 296.625 Tm(it) Tj/R46 10 Tf1 0 0 1 401.75 296.625 Tm(m) Tj/R43 10 Tf1 0 0 1 409 296.625 Tm(,) Tj1 0 0 1 415 296.625 Tm(and) Tj1 0 0 1 433 296.625 Tm(consider) Tj1 0 0 1 470.5 296.625 Tm(only) Tj1 0 0 1 491.75 296.625 Tm(the) Tj1 0 0 1 72 281.625 Tm(\256rst) Tj/R46 10 Tf1 0 0 1 90.375 281.625 Tm(m) Tj/R43 10 Tf1 0 0 1 100.5 281.625 Tm(characters) Tj1 0 0 1 144.25 281.625 Tm(of) Tj1 0 0 1 155.5 281.625 Tm(each) Tj1 0 0 1 176.875 281.625 Tm(pattern.) Tj1 0 0 1 212.625 281.625 Tm(In) Tj1 0 0 1 223.875 281.625 Tm(other) Tj1 0 0 1 247.25 281.625 Tm(words,) Tj1 0 0 1 277 281.625 Tm(we) Tj1 0 0 1 291.5 281.625 Tm(impose) Tj1 0 0 1 323.125 281.625 Tm(a) Tj1 0 0 1 330.375 281.625 Tm(requirement) Tj1 0 0 1 381.625 281.625 Tm(that) Tj1 0 0 1 399.375 281.625 Tm(all) Tj1 0 0 1 412.125 281.625 Tm(patterns) Tj1 0 0 1 446.625 281.625 Tm(have) Tj1 0 0 1 468.375 281.625 Tm(the) Tj1 0 0 1 483.375 281.625 Tm(same) Tj1 0 0 1 72 266.625 Tm(length.) Tj1 0 0 1 104.875 266.625 Tm(It) Tj1 0 0 1 113.875 266.625 Tm(turns) Tj1 0 0 1 136.75 266.625 Tm(out) Tj1 0 0 1 152.375 266.625 Tm(that) Tj1 0 0 1 170.25 266.625 Tm(this) Tj1 0 0 1 187.625 266.625 Tm(requirement) Tj1 0 0 1 239.125 266.625 Tm(is) Tj1 0 0 1 248.75 266.625 Tm(crucial) Tj1 0 0 1 279.125 266.625 Tm(to) Tj1 0 0 1 289.875 266.625 Tm(the) Tj1 0 0 1 305.125 266.625 Tm(ef\256ciency) Tj1 0 0 1 347.75 266.625 Tm(of) Tj1 0 0 1 359.125 266.625 Tm(the) Tj1 0 0 1 374.375 266.625 Tm(algorithm.) Tj1 0 0 1 421.25 266.625 Tm(Notice) Tj1 0 0 1 451 266.625 Tm(that) Tj1 0 0 1 469 266.625 Tm(if) Tj1 0 0 1 478.125 266.625 Tm(one) Tj1 0 0 1 495.625 266.625 Tm(of) Tj1 0 0 1 72 251.625 Tm(the) Tj1 0 0 1 87.125 251.625 Tm(patterns) Tj1 0 0 1 121.75 251.625 Tm(is) Tj1 0 0 1 131.25 251.625 Tm(very) Tj1 0 0 1 152 251.625 Tm(short,) Tj1 0 0 1 177.375 251.625 Tm(say) Tj1 0 0 1 193.625 251.625 Tm(of) Tj1 0 0 1 204.875 251.625 Tm(length) Tj1 0 0 1 232.75 251.625 Tm(2,) Tj1 0 0 1 243.125 251.625 Tm(then) Tj1 0 0 1 263.25 251.625 Tm(we) Tj1 0 0 1 277.875 251.625 Tm(can) Tj1 0 0 1 294.75 251.625 Tm(never) Tj1 0 0 1 320 251.625 Tm(shift) Tj1 0 0 1 340.625 251.625 Tm(by) Tj1 0 0 1 353.5 251.625 Tm(more) Tj1 0 0 1 377 251.625 Tm(than) Tj1 0 0 1 397.125 251.625 Tm(2,) Tj1 0 0 1 407.5 251.625 Tm(so) Tj1 0 0 1 419.25 251.625 Tm(having) Tj1 0 0 1 449.375 251.625 Tm(short) Tj1 0 0 1 472.25 251.625 Tm(patterns) Tj1 0 0 1 72 236.625 Tm(inherently) Tj1 0 0 1 115.125 236.625 Tm(makes) Tj1 0 0 1 143.25 236.625 Tm(this) Tj1 0 0 1 160.125 236.625 Tm(approach) Tj1 0 0 1 199.5 236.625 Tm(less) Tj1 0 0 1 217 236.625 Tm(ef\256cient.) Tj1 0 0 1 97 217.5 Tm(Instead) Tj1 0 0 1 128.875 217.5 Tm(of) Tj1 0 0 1 140.125 217.5 Tm(looking) Tj1 0 0 1 173.5 217.5 Tm(at) Tj1 0 0 1 183.625 217.5 Tm(characters) Tj1 0 0 1 227.375 217.5 Tm(from) Tj1 0 0 1 249.75 217.5 Tm(the) Tj1 0 0 1 264.875 217.5 Tm(text) Tj1 0 0 1 282.75 217.5 Tm(one) Tj1 0 0 1 300.125 217.5 Tm(by) Tj1 0 0 1 313 217.5 Tm(one,) Tj1 0 0 1 332.875 217.5 Tm(we) Tj1 0 0 1 347.5 217.5 Tm(consider) Tj1 0 0 1 384.375 217.5 Tm(them) Tj1 0 0 1 407.25 217.5 Tm(in) Tj1 0 0 1 417.875 217.5 Tm(blocks) Tj1 0 0 1 446.875 217.5 Tm(of) Tj1 0 0 1 458.125 217.5 Tm(size) Tj/R46 10 Tf1 0 0 1 476.625 217.5 Tm(B) Tj/R43 10 Tf1 0 0 1 482.75 217.5 Tm(.) Tj1 0 0 1 490.625 217.5 Tm(Let) Tj/R46 10 Tf1 0 0 1 72 202.5 Tm(M) Tj/R43 10 Tf1 0 0 1 83.625 202.5 Tm(be) Tj1 0 0 1 96.375 202.5 Tm(the) Tj1 0 0 1 111.875 202.5 Tm(total) Tj1 0 0 1 132.875 202.5 Tm(size) Tj1 0 0 1 151.75 202.5 Tm(of) Tj1 0 0 1 163.375 202.5 Tm(all) Tj1 0 0 1 176.625 202.5 Tm(patterns,) Tj/R46 10 Tf1 0 0 1 214.125 202.5 Tm(M) TjETendstreamendobj52 0 obj13361endobj53 0 obj>endobj54 0 obj>streamBT/R53 10 Tf1 0 0 1 224.875 202.5 Tm(=) Tj/R46 10 Tf1 0 0 1 232 202.5 Tm(k*m) Tj/R43 10 Tf1 0 0 1 248.75 202.5 Tm(,) Tj1 0 0 1 254.5 202.5 Tm(and) Tj1 0 0 1 272.25 202.5 Tm(let) Tj/R46 10 Tf1 0 0 1 285.5 202.5 Tm(c) Tj/R43 10 Tf1 0 0 1 293.25 202.5 Tm(be) Tj1 0 0 1 306 202.5 Tm(the) Tj1 0 0 1 321.5 202.5 Tm(size) Tj1 0 0 1 340.375 202.5 Tm(of) Tj1 0 0 1 352 202.5 Tm(the) Tj1 0 0 1 367.5 202.5 Tm(alphabet.) Tj1 0 0 1 409.75 202.5 Tm(As) Tj1 0 0 1 424 202.5 Tm(we) Tj1 0 0 1 438.875 202.5 Tm(show) Tj1 0 0 1 463.125 202.5 Tm(in) Tj1 0 0 1 474 202.5 Tm(Section) Tj1 0 0 1 72 187.5 Tm(3.1,) Tj1 0 0 1 89.625 187.5 Tm(a) Tj1 0 0 1 96.875 187.5 Tm(good) Tj1 0 0 1 119.625 187.5 Tm(value) Tj1 0 0 1 144.125 187.5 Tm(of) Tj/R46 10 Tf1 0 0 1 155.25 187.5 Tm(B) Tj/R43 10 Tf1 0 0 1 164.125 187.5 Tm(is) Tj1 0 0 1 173.5 187.5 Tm(in) Tj1 0 0 1 184 187.5 Tm(the) Tj1 0 0 1 199 187.5 Tm(order) Tj1 0 0 1 223 187.5 Tm(of) Tj1 0 0 1 234.125 187.5 Tm(log) Tj/R46 7 Tf1 0 0 1 246.875 185.5 Tm(c) Tj/R43 10 Tf1 0 0 1 250.75 187.5 Tm(2) Tj/R46 10 Tf1 0 0 1 255.75 187.5 Tm(M) Tj/R43 10 Tf1 0 0 1 264.125 187.5 Tm(;) Tj1 0 0 1 269.625 187.5 Tm(in) Tj1 0 0 1 280.125 187.5 Tm(practice,) Tj1 0 0 1 317.25 187.5 Tm(we) Tj1 0 0 1 331.75 187.5 Tm(use) Tj1 0 0 1 347.875 187.5 Tm(either) Tj/R46 10 Tf1 0 0 1 373.5 187.5 Tm(B) Tj/R53 10 Tf1 0 0 1 381.25 187.5 Tm(=) Tj/R43 10 Tf1 0 0 1 388.375 187.5 Tm(2) Tj1 0 0 1 396.125 187.5 Tm(or) Tj/R46 10 Tf1 0 0 1 407.25 187.5 Tm(B) Tj/R53 10 Tf1 0 0 1 415.75 187.5 Tm(=) Tj/R43 10 Tf1 0 0 1 422.875 187.5 Tm(3.) Tj1 0 0 1 435.625 187.5 Tm(The) Tj1 0 0 1 454 187.5 Tm(SHIFT) Tj1 0 0 1 484.5 187.5 Tm(table) Tj1 0 0 1 72 172.5 Tm(plays) Tj1 0 0 1 96.5 172.5 Tm(the) Tj1 0 0 1 112.125 172.5 Tm(same) Tj1 0 0 1 136.125 172.5 Tm(role) Tj1 0 0 1 155.125 172.5 Tm(as) Tj1 0 0 1 166.875 172.5 Tm(in) Tj1 0 0 1 177.875 172.5 Tm(the) Tj1 0 0 1 193.375 172.5 Tm(regular) Tj1 0 0 1 225.125 172.5 Tm(Boyer-Moore) Tj1 0 0 1 283 172.5 Tm(algorithm,) Tj1 0 0 1 327.625 172.5 Tm(except) Tj1 0 0 1 357.125 172.5 Tm(that) Tj1 0 0 1 375.375 172.5 Tm(it) Tj1 0 0 1 384.125 172.5 Tm(determines) Tj1 0 0 1 431.375 172.5 Tm(the) Tj1 0 0 1 446.875 172.5 Tm(shift) Tj1 0 0 1 467.875 172.5 Tm(based) Tj1 0 0 1 494 172.5 Tm(on) Tj1 0 0 1 72 157.5 Tm(the) Tj1 0 0 1 87 157.5 Tm(last) Tj/R46 10 Tf1 0 0 1 103.625 157.5 Tm(B) Tj/R43 10 Tf1 0 0 1 112.5 157.5 Tm(characters) Tj1 0 0 1 156.125 157.5 Tm(rather) Tj1 0 0 1 182.375 157.5 Tm(than) Tj1 0 0 1 202.375 157.5 Tm(just) Tj1 0 0 1 219.5 157.5 Tm(one) Tj1 0 0 1 236.75 157.5 Tm(character.) Tj1 0 0 1 281.5 157.5 Tm(For) Tj1 0 0 1 298.125 157.5 Tm(example,) Tj1 0 0 1 337.375 157.5 Tm(if) Tj1 0 0 1 346.25 157.5 Tm(the) Tj1 0 0 1 361.25 157.5 Tm(string) Tj1 0 0 1 386.75 157.5 Tm(of) Tj/R46 10 Tf1 0 0 1 397.875 157.5 Tm(B) Tj/R43 10 Tf1 0 0 1 406.75 157.5 Tm(characters) Tj1 0 0 1 450.375 157.5 Tm(in) Tj1 0 0 1 461 157.5 Tm(the) Tj1 0 0 1 476.125 157.5 Tm(text) Tj1 0 0 1 494 157.5 Tm(do) Tj1 0 0 1 72 142.5 Tm(not) Tj1 0 0 1 87.5 142.5 Tm(appear) Tj1 0 0 1 117.125 142.5 Tm(in) Tj1 0 0 1 127.625 142.5 Tm(any) Tj1 0 0 1 144.875 142.5 Tm(of) Tj1 0 0 1 156 142.5 Tm(the) Tj1 0 0 1 171 142.5 Tm(patterns,) Tj1 0 0 1 207.875 142.5 Tm(then) Tj1 0 0 1 227.75 142.5 Tm(we) Tj1 0 0 1 242.125 142.5 Tm(can) Tj1 0 0 1 258.75 142.5 Tm(shift) Tj1 0 0 1 279.125 142.5 Tm(by) Tj/R46 10 Tf1 0 0 1 291.75 142.5 Tm(m) TjETq5.5 0 0 -0.6 300.4 145.5 cm/R49 DoQBT1 0 0 1 306.125 142.5 Tm(B) Tj/R53 10 Tf1 0 0 1 313.875 142.5 Tm(+) Tj/R43 10 Tf1 0 0 1 319.375 142.5 Tm(1.) Tj1 0 0 1 332 142.5 Tm(Let's) Tj1 0 0 1 355.25 142.5 Tm(assume) Tj1 0 0 1 387.375 142.5 Tm(for) Tj1 0 0 1 401.75 142.5 Tm(now) Tj1 0 0 1 421.625 142.5 Tm(that) Tj1 0 0 1 439.25 142.5 Tm(the) Tj1 0 0 1 454.125 142.5 Tm(SHIFT) Tj1 0 0 1 484.5 142.5 Tm(table) Tj1 0 0 1 72 127.5 Tm(contains) Tj1 0 0 1 108 127.5 Tm(an) Tj1 0 0 1 120.125 127.5 Tm(entry) Tj1 0 0 1 143.375 127.5 Tm(for) Tj1 0 0 1 157.75 127.5 Tm(each) Tj1 0 0 1 178.875 127.5 Tm(possible) Tj1 0 0 1 214.25 127.5 Tm(string) Tj1 0 0 1 239.625 127.5 Tm(of) Tj1 0 0 1 250.625 127.5 Tm(size) Tj/R46 10 Tf1 0 0 1 268.875 127.5 Tm(B) Tj/R43 10 Tf1 0 0 1 275 127.5 Tm(,) Tj1 0 0 1 280.125 127.5 Tm(so) Tj1 0 0 1 291.625 127.5 Tm(its) Tj1 0 0 1 303.625 127.5 Tm(size) Tj1 0 0 1 321.875 127.5 Tm(is) Tj/R53 10 Tf1 0 0 1 332.875 127.5 Tm(|) TjETendstreamendobj55 0 obj4580endobj56 0 obj]>>stream0F%:Fmsf5sM=sAqgNO0HgNMHP\)"PPmI']BDYEgOG5#0eVs.+OWHqm901qQVlendstreamendobj57 0 obj89endobj58 0 obj>streamq6.1 0 0 -6.7 336.3 134.2 cm/R56 DoQBT1 0 0 1 344 127.5 Tm(|) Tj/R46 7 Tf1 0 0 1 347.625 131.5 Tm(B) Tj/R43 10 Tf1 0 0 1 352.625 127.5 Tm(.) Tj1 0 0 1 360.375 127.5 Tm(\(We) Tj1 0 0 1 380.5 127.5 Tm(will) Tj1 0 0 1 398.75 127.5 Tm(actually) Tj1 0 0 1 433.25 127.5 Tm(use) Tj1 0 0 1 449.375 127.5 Tm(a) Tj1 0 0 1 456.625 127.5 Tm(compressed) Tj1 0 0 1 72 112.5 Tm(table) Tj1 0 0 1 95.5 112.5 Tm(with) Tj1 0 0 1 117.25 112.5 Tm(several) Tj1 0 0 1 149.75 112.5 Tm(strings) Tj1 0 0 1 180.375 112.5 Tm(mapped) Tj1 0 0 1 216.125 112.5 Tm(into) Tj1 0 0 1 235.625 112.5 Tm(the) Tj1 0 0 1 251.875 112.5 Tm(same) Tj1 0 0 1 276.5 112.5 Tm(entry) Tj1 0 0 1 301.125 112.5 Tm(to) Tj1 0 0 1 312.875 112.5 Tm(save) Tj1 0 0 1 334.75 112.5 Tm(space.\)) Tj1 0 0 1 369.375 112.5 Tm(Each) Tj1 0 0 1 393.375 112.5 Tm(string) Tj1 0 0 1 420 112.5 Tm(of) Tj1 0 0 1 432.25 112.5 Tm(size) Tj/R46 10 Tf1 0 0 1 451.75 112.5 Tm(B) Tj/R43 10 Tf1 0 0 1 461.75 112.5 Tm(is) Tj1 0 0 1 472.25 112.5 Tm(mapped) Tj1 0 0 1 72 97.5 Tm(\(using) Tj1 0 0 1 99.625 97.5 Tm(a) Tj1 0 0 1 106.75 97.5 Tm(hash) Tj1 0 0 1 127.75 97.5 Tm(function) Tj1 0 0 1 163.75 97.5 Tm(discussed) Tj1 0 0 1 204.75 97.5 Tm(later\)) Tj1 0 0 1 228.625 97.5 Tm(to) Tj1 0 0 1 239 97.5 Tm(an) Tj1 0 0 1 251.125 97.5 Tm(integer) Tj1 0 0 1 281.75 97.5 Tm(used) Tj1 0 0 1 302.875 97.5 Tm(as) Tj1 0 0 1 314 97.5 Tm(an) Tj1 0 0 1 326.25 97.5 Tm(index) Tj1 0 0 1 351.25 97.5 Tm(to) Tj1 0 0 1 361.75 97.5 Tm(the) Tj1 0 0 1 376.75 97.5 Tm(SHIFT) Tj1 0 0 1 407.25 97.5 Tm(table.) Tj1 0 0 1 434.5 97.5 Tm(The) Tj1 0 0 1 452.875 97.5 Tm(values) Tj1 0 0 1 481.25 97.5 Tm(in) Tj1 0 0 1 491.75 97.5 Tm(the) Tj1 0 0 1 72 82.5 Tm(SHIFT) Tj1 0 0 1 103 82.5 Tm(table) Tj1 0 0 1 125.75 82.5 Tm(determine) Tj1 0 0 1 169.125 82.5 Tm(how) Tj1 0 0 1 189.625 82.5 Tm(far) Tj1 0 0 1 204.125 82.5 Tm(we) Tj1 0 0 1 219.125 82.5 Tm(can) Tj1 0 0 1 236.375 82.5 Tm(shift) Tj1 0 0 1 257.375 82.5 Tm(forward) Tj1 0 0 1 292.5 82.5 Tm(\(skip\)) Tj1 0 0 1 319.125 82.5 Tm(while) Tj1 0 0 1 344.625 82.5 Tm(we) Tj1 0 0 1 359.625 82.5 Tm(scan) Tj1 0 0 1 380.75 82.5 Tm(the) Tj1 0 0 1 396.25 82.5 Tm(text.) Tj1 0 0 1 419.5 82.5 Tm(Let) Tj/R46 10 Tf1 0 0 1 436.125 82.5 Tm(X) Tj/R43 10 Tf1 0 0 1 445.5 82.5 Tm(=) Tj/R46 10 Tf1 0 0 1 454.375 82.5 Tm(x) Tj/R43 7 Tf1 0 0 1 460 80.5 Tm(1) Tj/R43 10 Tf1 0 0 1 466.75 85.5 Tm(.) Tj1 0 0 1 471.75 85.5 Tm(.) Tj1 0 0 1 476.75 85.5 Tm(.) Tj/R46 10 Tf1 0 0 1 481.75 82.5 Tm(x) Tj/R46 7 Tf1 0 0 1 486.25 80.5 Tm(B) Tj/R43 10 Tf1 0 0 1 494.5 82.5 Tm(be) TjETQendstreamendobj59 0 obj2659endobj60 0 obj>>/Contents [38 0 R41 0 R44 0 R47 0 R51 0 R54 0 R58 0 R]>>endobj61 0 obj>endobj62 0 obj>streamqBT/R61 10 Tf1 0 0 1 285.5 705 Tm(4) TjETendstreamendobj63 0 obj47endobj64 0 obj>endobj65 0 obj>streamBT/R64 10 Tf1 0 0 1 72 669 Tm(the) TjETendstreamendobj66 0 obj44endobj67 0 obj>endobj68 0 obj>streamBT/R67 10 Tf1 0 0 1 87.125 669 Tm(B) Tj/R64 10 Tf1 0 0 1 96.125 669 Tm(characters) Tj1 0 0 1 139.875 669 Tm(in) Tj1 0 0 1 150.5 669 Tm(the) Tj1 0 0 1 165.625 669 Tm(text) Tj1 0 0 1 183.5 669 Tm(that) Tj1 0 0 1 201.375 669 Tm(we) Tj1 0 0 1 216 669 Tm(are) Tj1 0 0 1 231.25 669 Tm(currently) Tj1 0 0 1 270.375 669 Tm(scanning,) Tj1 0 0 1 311.375 669 Tm(and) Tj1 0 0 1 328.75 669 Tm(assume) Tj1 0 0 1 361.25 669 Tm(that) Tj/R67 10 Tf1 0 0 1 379.25 669 Tm(X) Tj/R64 10 Tf1 0 0 1 388.375 669 Tm(is) Tj1 0 0 1 398 669 Tm(mapped) Tj1 0 0 1 432.75 669 Tm(into) Tj1 0 0 1 451.25 669 Tm(the) Tj/R67 10 Tf1 0 0 1 466.5 669 Tm(i) Tj/R64 10 Tf1 0 0 1 469.25 669 Tm('th) Tj1 0 0 1 483.375 669 Tm(entry) Tj1 0 0 1 72 654 Tm(of) Tj/R67 10 Tf1 0 0 1 82.875 654 Tm(SHIFT) Tj/R64 10 Tf1 0 0 1 110.125 654 Tm(.) Tj1 0 0 1 117.625 654 Tm(There) Tj1 0 0 1 143.625 654 Tm(are) Tj1 0 0 1 158.5 654 Tm(two) Tj1 0 0 1 176 654 Tm(cases:) Tj1 0 0 1 72 634.875 Tm(1.) Tj/R67 10 Tf1 0 0 1 82 634.875 Tm(X) Tj/R64 10 Tf1 0 0 1 90.625 634.875 Tm(does) Tj1 0 0 1 111.5 634.875 Tm(not) Tj1 0 0 1 126.75 634.875 Tm(appear) Tj1 0 0 1 156.125 634.875 Tm(as) Tj1 0 0 1 167 634.875 Tm(a) Tj1 0 0 1 174 634.875 Tm(substring) Tj1 0 0 1 213.125 634.875 Tm(in) Tj1 0 0 1 223.375 634.875 Tm(any) Tj1 0 0 1 240.375 634.875 Tm(pattern) Tj1 0 0 1 270.75 634.875 Tm(of) Tj/R67 10 Tf1 0 0 1 281.625 634.875 Tm(P) Tj/R64 10 Tf1 0 0 1 97 619.875 Tm(In) Tj1 0 0 1 108.25 619.875 Tm(this) Tj1 0 0 1 125.5 619.875 Tm(case,) Tj1 0 0 1 148.25 619.875 Tm(we) Tj1 0 0 1 162.875 619.875 Tm(can) Tj1 0 0 1 179.75 619.875 Tm(clearly) Tj1 0 0 1 210 619.875 Tm(shift) Tj/R67 10 Tf1 0 0 1 230.625 619.875 Tm(m) TjETendstreamendobj69 0 obj1764endobj70 0 obj]>>stream0Ee$C!.Y=~>endstreamendobj71 0 obj12endobj72 0 obj>streamq5.5 0 0 -0.6 239.3 622.9 cm/R70 DoQBT1 0 0 1 245 619.875 Tm(B) TjETendstreamendobj73 0 obj76endobj74 0 obj>endobj75 0 obj>streamBT/R74 10 Tf1 0 0 1 252.75 619.875 Tm(+) Tj/R64 10 Tf1 0 0 1 258.25 619.875 Tm(1) Tj1 0 0 1 266.125 619.875 Tm(characters) Tj1 0 0 1 309.875 619.875 Tm(in) Tj1 0 0 1 320.5 619.875 Tm(the) Tj1 0 0 1 335.625 619.875 Tm(text.) Tj1 0 0 1 358.5 619.875 Tm(Any) Tj1 0 0 1 378.625 619.875 Tm(smaller) Tj1 0 0 1 411 619.875 Tm(shift) Tj1 0 0 1 431.625 619.875 Tm(will) Tj1 0 0 1 450 619.875 Tm(put) Tj1 0 0 1 465.75 619.875 Tm(the) Tj1 0 0 1 481 619.875 Tm(last) Tj/R67 10 Tf1 0 0 1 497.875 619.875 Tm(B) Tj/R64 10 Tf1 0 0 1 97 604.875 Tm(characters) Tj1 0 0 1 141.625 604.875 Tm(of) Tj1 0 0 1 153.75 604.875 Tm(the) Tj1 0 0 1 169.75 604.875 Tm(text) Tj1 0 0 1 188.5 604.875 Tm(against) Tj1 0 0 1 220.625 604.875 Tm(a) Tj1 0 0 1 228.875 604.875 Tm(substring) Tj1 0 0 1 269.25 604.875 Tm(of) Tj1 0 0 1 281.375 604.875 Tm(one) Tj1 0 0 1 299.625 604.875 Tm(of) Tj1 0 0 1 311.75 604.875 Tm(the) Tj1 0 0 1 327.75 604.875 Tm(patterns) Tj1 0 0 1 363.25 604.875 Tm(which) Tj1 0 0 1 391.5 604.875 Tm(is) Tj1 0 0 1 401.875 604.875 Tm(a) Tj1 0 0 1 410.125 604.875 Tm(mismatch.) Tj1 0 0 1 455.25 604.875 Tm(We) Tj1 0 0 1 473 604.875 Tm(store) Tj1 0 0 1 496.25 604.875 Tm(in) Tj/R67 10 Tf1 0 0 1 97 589.875 Tm(SHIFT) Tj/R64 10 Tf1 0 0 1 125.875 589.875 Tm([) Tj/R67 10 Tf1 0 0 1 129.25 589.875 Tm(i) Tj/R64 10 Tf1 0 0 1 133.625 589.875 Tm(]) Tj1 0 0 1 139.5 589.875 Tm(the) Tj1 0 0 1 154.25 589.875 Tm(number) Tj/R67 10 Tf1 0 0 1 187.375 589.875 Tm(m) TjETq5.5 0 0 -0.6 196.1 592.9 cm/R70 DoQBT1 0 0 1 201.75 589.875 Tm(B) Tj/R74 10 Tf1 0 0 1 209.5 589.875 Tm(+) Tj/R64 10 Tf1 0 0 1 215 589.875 Tm(1.) Tj1 0 0 1 72 570.75 Tm(2.) Tj/R67 10 Tf1 0 0 1 82 570.75 Tm(X) Tj/R64 10 Tf1 0 0 1 90.625 570.75 Tm(appears) Tj1 0 0 1 123.875 570.75 Tm(in) Tj1 0 0 1 134.125 570.75 Tm(some) Tj1 0 0 1 157.75 570.75 Tm(patterns) Tj1 0 0 1 97 555.75 Tm(In) Tj1 0 0 1 108.125 555.75 Tm(this) Tj1 0 0 1 125.25 555.75 Tm(case,) Tj1 0 0 1 147.875 555.75 Tm(we) Tj1 0 0 1 162.375 555.75 Tm(\256nd) Tj1 0 0 1 180.75 555.75 Tm(the) Tj1 0 0 1 195.875 555.75 Tm(rightmost) Tj0.00451375 Tw1 0 0 1 237 555.75 Tm(occurrence) Tj0 Tw1 0 0 1 284.125 555.75 Tm(of) Tj/R67 10 Tf1 0 0 1 295.375 555.75 Tm(X) Tj/R64 10 Tf1 0 0 1 304.375 555.75 Tm(in) Tj1 0 0 1 315 555.75 Tm(any) Tj1 0 0 1 332.375 555.75 Tm(of) Tj1 0 0 1 343.625 555.75 Tm(the) Tj1 0 0 1 358.75 555.75 Tm(patterns;) Tj1 0 0 1 396.125 555.75 Tm(let's) Tj1 0 0 1 416.25 555.75 Tm(assume) Tj1 0 0 1 448.625 555.75 Tm(that) Tj/R67 10 Tf1 0 0 1 466.5 555.75 Tm(X) Tj/R64 10 Tf1 0 0 1 475.5 555.75 Tm(ends) Tj1 0 0 1 496.75 555.75 Tm(at) Tj1 0 0 1 97 540.75 Tm(position) Tj/R67 10 Tf1 0 0 1 131.875 540.75 Tm(q) Tj/R64 10 Tf1 0 0 1 139.625 540.75 Tm(of) Tj/R67 10 Tf1 0 0 1 150.75 540.75 Tm(P) Tj/R67 7 Tf1 0 0 1 157.375 538.75 Tm(j) Tj/R64 10 Tf1 0 0 1 162.875 540.75 Tm(and) Tj1 0 0 1 180.125 540.75 Tm(that) Tj/R67 10 Tf1 0 0 1 197.875 540.75 Tm(X) Tj/R64 10 Tf1 0 0 1 206.75 540.75 Tm(does) Tj1 0 0 1 227.875 540.75 Tm(not) Tj1 0 0 1 243.375 540.75 Tm(end) Tj1 0 0 1 260.625 540.75 Tm(at) Tj1 0 0 1 270.625 540.75 Tm(any) Tj1 0 0 1 287.875 540.75 Tm(position) Tj1 0 0 1 322.75 540.75 Tm(greater) Tj1 0 0 1 353.5 540.75 Tm(than) Tj/R67 10 Tf1 0 0 1 373.5 540.75 Tm(q) Tj/R64 10 Tf1 0 0 1 381.25 540.75 Tm(in) Tj1 0 0 1 391.75 540.75 Tm(any) Tj1 0 0 1 409 540.75 Tm(other) Tj1 0 0 1 432.375 540.75 Tm(pattern.) Tj1 0 0 1 467.875 540.75 Tm(We) Tj1 0 0 1 484.5 540.75 Tm(store) Tj/R67 10 Tf1 0 0 1 97 525.75 Tm(m) TjETq5.5 0 0 -0.6 106.4 528.8 cm/R70 DoQBT1 0 0 1 113.75 525.75 Tm(q) Tj/R64 10 Tf1 0 0 1 121.25 525.75 Tm(in) Tj/R67 10 Tf1 0 0 1 131.5 525.75 Tm(SHIFT) Tj/R64 10 Tf1 0 0 1 160.375 525.75 Tm([) Tj/R67 10 Tf1 0 0 1 163.75 525.75 Tm(i) Tj/R64 10 Tf1 0 0 1 168.125 525.75 Tm(].) Tj1 0 0 1 97 506.625 Tm(To) Tj1 0 0 1 111.75 506.625 Tm(compute) Tj1 0 0 1 149.875 506.625 Tm(the) Tj1 0 0 1 165.75 506.625 Tm(values) Tj1 0 0 1 195 506.625 Tm(of) Tj1 0 0 1 207 506.625 Tm(the) Tj1 0 0 1 222.875 506.625 Tm(SHIFT) Tj1 0 0 1 254.25 506.625 Tm(table,) Tj1 0 0 1 280 506.625 Tm(we) Tj1 0 0 1 295.5 506.625 Tm(consider) Tj1 0 0 1 333.25 506.625 Tm(each) Tj1 0 0 1 355.5 506.625 Tm(pattern) Tj/R67 10 Tf1 0 0 1 387.125 506.625 Tm(p) Tj/R67 7 Tf1 0 0 1 392.125 504.625 Tm(i) Tj/R64 10 Tf1 0 0 1 398.625 506.625 Tm(=) Tj/R67 10 Tf1 0 0 1 408 506.625 Tm(a) Tj/R64 7 Tf1 0 0 1 414.125 504.625 Tm(1) Tj/R67 10 Tf1 0 0 1 418.375 506.625 Tm(a) Tj/R64 7 Tf1 0 0 1 424.5 504.625 Tm(2) Tj/R64 10 Tf1 0 0 1 431.25 509.625 Tm(.) Tj1 0 0 1 436.25 509.625 Tm(.) Tj1 0 0 1 441.25 509.625 Tm(.) Tj/R67 10 Tf1 0 0 1 446.25 506.625 Tm(a) Tj/R67 7 Tf1 0 0 1 451.25 504.625 Tm(m) Tj/R64 10 Tf1 0 0 1 460.75 506.625 Tm(separately.) Tj1 0 0 1 72 491.625 Tm(We) Tj1 0 0 1 89.625 491.625 Tm(map) Tj1 0 0 1 110.5 491.625 Tm(each) Tj1 0 0 1 132.625 491.625 Tm(substring) Tj1 0 0 1 172.875 491.625 Tm(of) Tj/R67 10 Tf1 0 0 1 184.875 491.625 Tm(p) Tj/R67 7 Tf1 0 0 1 189.875 489.625 Tm(i) Tj/R64 10 Tf1 0 0 1 196.25 491.625 Tm(of) Tj1 0 0 1 208.25 491.625 Tm(size) Tj/R67 10 Tf1 0 0 1 227.5 491.625 Tm(B) Tj1 0 0 1 237.25 491.625 Tm(a) Tj/R67 7 Tf1 0 0 1 242.75 489.625 Tm(j) TjETendstreamendobj76 0 obj5397endobj77 0 obj]>>stream4;siB#QTA~>endstreamendobj78 0 obj12endobj79 0 obj>streamq4.2 0 0 -0.4 245.4 491.7 cm/R77 DoQBT1 0 0 1 249.75 489.625 Tm(B) Tj/R74 7 Tf1 0 0 1 255.125 489.625 Tm(+) Tj/R64 7 Tf1 0 0 1 259 489.625 Tm(1) Tj/R64 10 Tf1 0 0 1 265.75 494.625 Tm(.) Tj1 0 0 1 270.75 494.625 Tm(.) Tj1 0 0 1 275.75 494.625 Tm(.) Tj/R67 10 Tf1 0 0 1 280.75 491.625 Tm(a) Tj/R67 7 Tf1 0 0 1 286.25 489.625 Tm(j) Tj/R64 10 Tf1 0 0 1 292.625 491.625 Tm(into) Tj1 0 0 1 311.75 491.625 Tm(SHIFT,) Tj1 0 0 1 345.625 491.625 Tm(and) Tj1 0 0 1 363.75 491.625 Tm(set) Tj1 0 0 1 378.5 491.625 Tm(the) Tj1 0 0 1 394.375 491.625 Tm(corresponding) Tj1 0 0 1 455.25 491.625 Tm(value) Tj1 0 0 1 480.5 491.625 Tm(to) Tj1 0 0 1 491.75 491.625 Tm(the) Tj1 0 0 1 72 476.625 Tm(minimum) Tj1 0 0 1 113.625 476.625 Tm(of) Tj1 0 0 1 124.875 476.625 Tm(its) Tj1 0 0 1 137.125 476.625 Tm(current) Tj1 0 0 1 168.5 476.625 Tm(value) Tj1 0 0 1 193.125 476.625 Tm(\(the) Tj1 0 0 1 211.625 476.625 Tm(initial) Tj1 0 0 1 237.75 476.625 Tm(value) Tj1 0 0 1 262.375 476.625 Tm(for) Tj1 0 0 1 277 476.625 Tm(all) Tj1 0 0 1 289.875 476.625 Tm(of) Tj1 0 0 1 301.125 476.625 Tm(them) Tj1 0 0 1 324 476.625 Tm(is) Tj/R67 10 Tf1 0 0 1 333.5 476.625 Tm(m) TjETq5.5 0 0 -0.6 342.2 479.6 cm/R70 DoQBT1 0 0 1 347.875 476.625 Tm(B) Tj/R74 10 Tf1 0 0 1 355.625 476.625 Tm(+) Tj/R64 10 Tf1 0 0 1 361.125 476.625 Tm(1\)) Tj1 0 0 1 372.375 476.625 Tm(and) Tj/R67 10 Tf1 0 0 1 389.75 476.625 Tm(m) TjETq5.5 0 0 -0.6 398.4 479.6 cm/R70 DoQBT1 0 0 1 404.875 476.625 Tm(j) Tj/R64 10 Tf1 0 0 1 410.5 476.625 Tm(\(the) Tj1 0 0 1 429.125 476.625 Tm(amount) Tj1 0 0 1 462.125 476.625 Tm(of) Tj1 0 0 1 473.5 476.625 Tm(shifting) Tj1 0 0 1 72 461.625 Tm(required) Tj1 0 0 1 108 461.625 Tm(to) Tj1 0 0 1 118.25 461.625 Tm(get) Tj1 0 0 1 133 461.625 Tm(to) Tj1 0 0 1 143.25 461.625 Tm(this) Tj1 0 0 1 160.125 461.625 Tm(substring\).) Tj1 0 0 1 97 442.5 Tm(The) Tj1 0 0 1 116 442.5 Tm(values) Tj1 0 0 1 145 442.5 Tm(in) Tj1 0 0 1 156.125 442.5 Tm(the) Tj1 0 0 1 171.75 442.5 Tm(SHIFT) Tj1 0 0 1 202.875 442.5 Tm(table) Tj1 0 0 1 225.75 442.5 Tm(are) Tj1 0 0 1 241.5 442.5 Tm(the) Tj1 0 0 1 257.125 442.5 Tm(largest) Tj1 0 0 1 287.25 442.5 Tm(possible) Tj1 0 0 1 323.5 442.5 Tm(safe) Tj1 0 0 1 343.25 442.5 Tm(values) Tj1 0 0 1 372.375 442.5 Tm(for) Tj1 0 0 1 387.625 442.5 Tm(shifts.) Tj1 0 0 1 417.75 442.5 Tm(Replacing) Tj1 0 0 1 461.875 442.5 Tm(any) Tj1 0 0 1 479.875 442.5 Tm(of) Tj1 0 0 1 491.75 442.5 Tm(the) Tj1 0 0 1 72 427.5 Tm(entries) Tj1 0 0 1 101.375 427.5 Tm(in) Tj1 0 0 1 111.75 427.5 Tm(the) Tj1 0 0 1 126.625 427.5 Tm(SHIFT) Tj1 0 0 1 157 427.5 Tm(table) Tj1 0 0 1 179.125 427.5 Tm(with) Tj1 0 0 1 199.5 427.5 Tm(a) Tj/R67 10 Tf1 0 0 1 206.625 427.5 Tm(smaller) Tj/R64 10 Tf1 0 0 1 239.25 427.5 Tm(value) Tj1 0 0 1 263.625 427.5 Tm(will) Tj1 0 0 1 281.75 427.5 Tm(make) Tj1 0 0 1 306.125 427.5 Tm(less) Tj1 0 0 1 323.625 427.5 Tm(shifts) Tj1 0 0 1 347.75 427.5 Tm(and) Tj1 0 0 1 364.75 427.5 Tm(will) Tj1 0 0 1 382.75 427.5 Tm(take) Tj1 0 0 1 402 427.5 Tm(more) Tj1 0 0 1 425.125 427.5 Tm(time,) Tj1 0 0 1 447.875 427.5 Tm(but) Tj1 0 0 1 463.125 427.5 Tm(it) Tj1 0 0 1 471.125 427.5 Tm(will) Tj1 0 0 1 489.125 427.5 Tm(still) Tj1 0 0 1 72 412.5 Tm(be) Tj1 0 0 1 84.25 412.5 Tm(safe:) Tj1 0 0 1 106 412.5 Tm(no) Tj1 0 0 1 118.75 412.5 Tm(match) Tj1 0 0 1 146 412.5 Tm(will) Tj1 0 0 1 164.25 412.5 Tm(be) Tj1 0 0 1 176.5 412.5 Tm(missed.) Tj1 0 0 1 212 412.5 Tm(So) Tj1 0 0 1 225.25 412.5 Tm(we) Tj1 0 0 1 239.75 412.5 Tm(can) Tj1 0 0 1 256.5 412.5 Tm(use) Tj1 0 0 1 272.625 412.5 Tm(a) Tj1 0 0 1 279.875 412.5 Tm(compressed) Tj1 0 0 1 330 412.5 Tm(table) Tj1 0 0 1 352.375 412.5 Tm(for) Tj1 0 0 1 367 412.5 Tm(SHIFT,) Tj1 0 0 1 400.125 412.5 Tm(mapping) Tj1 0 0 1 438 412.5 Tm(several) Tj1 0 0 1 469.375 412.5 Tm(different) Tj1 0 0 1 72 397.5 Tm(strings) Tj1 0 0 1 102.125 397.5 Tm(into) Tj1 0 0 1 121.125 397.5 Tm(the) Tj1 0 0 1 136.875 397.5 Tm(same) Tj1 0 0 1 161 397.5 Tm(entry) Tj1 0 0 1 185.125 397.5 Tm(as) Tj1 0 0 1 197 397.5 Tm(long) Tj1 0 0 1 218.25 397.5 Tm(as) Tj1 0 0 1 230.125 397.5 Tm(we) Tj1 0 0 1 245.375 397.5 Tm(set) Tj1 0 0 1 260 397.5 Tm(the) Tj1 0 0 1 275.75 397.5 Tm(minimal) Tj1 0 0 1 312.5 397.5 Tm(shift) Tj1 0 0 1 333.75 397.5 Tm(of) Tj1 0 0 1 345.625 397.5 Tm(all) Tj1 0 0 1 359.125 397.5 Tm(of) Tj1 0 0 1 371 397.5 Tm(them) Tj1 0 0 1 394.5 397.5 Tm(as) Tj1 0 0 1 406.375 397.5 Tm(the) Tj1 0 0 1 422.125 397.5 Tm(value.) Tj1 0 0 1 452.25 397.5 Tm(In) Tj1 0 0 1 464 397.5 Tm(agrep,) Tj1 0 0 1 492.25 397.5 Tm(we) Tj1 0 0 1 72 382.5 Tm(actually) Tj1 0 0 1 106.375 382.5 Tm(do) Tj1 0 0 1 119 382.5 Tm(both.) Tj1 0 0 1 144.375 382.5 Tm(When) Tj1 0 0 1 171 382.5 Tm(the) Tj1 0 0 1 185.875 382.5 Tm(number) Tj1 0 0 1 219.25 382.5 Tm(of) Tj1 0 0 1 230.375 382.5 Tm(patterns) Tj1 0 0 1 264.875 382.5 Tm(is) Tj1 0 0 1 274.25 382.5 Tm(small,) Tj1 0 0 1 301.125 382.5 Tm(we) Tj1 0 0 1 315.625 382.5 Tm(select) Tj/R67 10 Tf1 0 0 1 341.25 382.5 Tm(B) Tj/R74 10 Tf1 0 0 1 349.75 382.5 Tm(=) Tj/R64 10 Tf1 0 0 1 356.875 382.5 Tm(2,) Tj1 0 0 1 367.125 382.5 Tm(and) Tj1 0 0 1 384.375 382.5 Tm(use) Tj1 0 0 1 400.5 382.5 Tm(an) Tj1 0 0 1 412.75 382.5 Tm(exact) Tj1 0 0 1 436.75 382.5 Tm(table) Tj1 0 0 1 459 382.5 Tm(for) Tj1 0 0 1 473.5 382.5 Tm(SHIFT;) Tj1 0 0 1 72 367.5 Tm(otherwise,) Tj1 0 0 1 116.25 367.5 Tm(we) Tj1 0 0 1 130.75 367.5 Tm(select) Tj/R67 10 Tf1 0 0 1 156.375 367.5 Tm(B) Tj/R74 10 Tf1 0 0 1 164.875 367.5 Tm(=) Tj/R64 10 Tf1 0 0 1 172 367.5 Tm(3) Tj1 0 0 1 179.75 367.5 Tm(and) Tj1 0 0 1 197 367.5 Tm(use) Tj1 0 0 1 213.125 367.5 Tm(a) Tj1 0 0 1 220.375 367.5 Tm(compressed) Tj1 0 0 1 270.375 367.5 Tm(table) Tj1 0 0 1 292.5 367.5 Tm(for) Tj1 0 0 1 306.875 367.5 Tm(SHIFT.) Tj1 0 0 1 342.25 367.5 Tm(In) Tj1 0 0 1 353.25 367.5 Tm(either) Tj1 0 0 1 378.75 367.5 Tm(case,) Tj1 0 0 1 401.25 367.5 Tm(the) Tj1 0 0 1 416.125 367.5 Tm(algorithm) Tj1 0 0 1 457.625 367.5 Tm(is) Tj1 0 0 1 466.875 367.5 Tm(oblivious) Tj1 0 0 1 72 352.5 Tm(to) Tj1 0 0 1 82.25 352.5 Tm(whether) Tj1 0 0 1 117.125 352.5 Tm(or) Tj1 0 0 1 128 352.5 Tm(not) Tj1 0 0 1 143.25 352.5 Tm(the) Tj1 0 0 1 158 352.5 Tm(SHIFT) Tj1 0 0 1 188.25 352.5 Tm(table) Tj1 0 0 1 210.25 352.5 Tm(is) Tj1 0 0 1 219.375 352.5 Tm(exact.) Tj1 0 0 1 97 333.375 Tm(As) Tj1 0 0 1 111.25 333.375 Tm(long) Tj1 0 0 1 132.125 333.375 Tm(as) Tj1 0 0 1 143.625 333.375 Tm(the) Tj1 0 0 1 159 333.375 Tm(shift) Tj1 0 0 1 179.875 333.375 Tm(value) Tj1 0 0 1 204.75 333.375 Tm(is) Tj1 0 0 1 214.5 333.375 Tm(greater) Tj1 0 0 1 245.625 333.375 Tm(than) Tj1 0 0 1 266 333.375 Tm(0,) Tj1 0 0 1 276.625 333.375 Tm(we) Tj1 0 0 1 291.5 333.375 Tm(can) Tj1 0 0 1 308.625 333.375 Tm(safely) Tj1 0 0 1 335.75 333.375 Tm(shift) Tj1 0 0 1 356.625 333.375 Tm(and) Tj1 0 0 1 374.25 333.375 Tm(continue) Tj1 0 0 1 412 333.375 Tm(the) Tj1 0 0 1 427.5 333.375 Tm(scan.) Tj1 0 0 1 453.625 333.375 Tm(This) Tj1 0 0 1 474.625 333.375 Tm(is) Tj1 0 0 1 484.5 333.375 Tm(what) Tj1 0 0 1 72 318.375 Tm(happens) Tj1 0 0 1 107.875 318.375 Tm(most) Tj1 0 0 1 130.25 318.375 Tm(of) Tj1 0 0 1 141.625 318.375 Tm(the) Tj1 0 0 1 156.875 318.375 Tm(time.) Tj1 0 0 1 182.625 318.375 Tm(\(In) Tj1 0 0 1 197.375 318.375 Tm(a) Tj1 0 0 1 204.875 318.375 Tm(typical) Tj1 0 0 1 235.125 318.375 Tm(example,) Tj1 0 0 1 274.625 318.375 Tm(the) Tj1 0 0 1 289.875 318.375 Tm(shift) Tj1 0 0 1 310.625 318.375 Tm(value) Tj1 0 0 1 335.25 318.375 Tm(was) Tj1 0 0 1 353.75 318.375 Tm(zero) Tj1 0 0 1 374 318.375 Tm(5%) Tj1 0 0 1 390.25 318.375 Tm(of) Tj1 0 0 1 401.5 318.375 Tm(the) Tj1 0 0 1 416.625 318.375 Tm(time) Tj1 0 0 1 437.25 318.375 Tm(for) Tj1 0 0 1 451.875 318.375 Tm(100) Tj1 0 0 1 469.75 318.375 Tm(patterns,) Tj1 0 0 1 72 303.375 Tm(27%) Tj1 0 0 1 93.5 303.375 Tm(for) Tj1 0 0 1 108.375 303.375 Tm(1000) Tj1 0 0 1 131.5 303.375 Tm(patterns,) Tj1 0 0 1 168.875 303.375 Tm(and) Tj1 0 0 1 186.5 303.375 Tm(53%) Tj1 0 0 1 208 303.375 Tm(for) Tj1 0 0 1 222.875 303.375 Tm(5000) Tj1 0 0 1 246 303.375 Tm(patterns.\)) Tj1 0 0 1 289.25 303.375 Tm(Otherwise,) Tj1 0 0 1 336.25 303.375 Tm(it) Tj1 0 0 1 345 303.375 Tm(is) Tj1 0 0 1 354.875 303.375 Tm(possible) Tj1 0 0 1 390.875 303.375 Tm(that) Tj1 0 0 1 409.125 303.375 Tm(the) Tj1 0 0 1 424.625 303.375 Tm(current) Tj1 0 0 1 456.375 303.375 Tm(substring) Tj1 0 0 1 496.25 303.375 Tm(in) Tj1 0 0 1 72 288.375 Tm(the) Tj1 0 0 1 87.375 288.375 Tm(text) Tj1 0 0 1 105.5 288.375 Tm(matches) Tj1 0 0 1 141.375 288.375 Tm(some) Tj1 0 0 1 165.5 288.375 Tm(pattern) Tj1 0 0 1 196.375 288.375 Tm(in) Tj1 0 0 1 207.125 288.375 Tm(the) Tj1 0 0 1 222.375 288.375 Tm(pattern) Tj1 0 0 1 253.25 288.375 Tm(list.) Tj1 0 0 1 273.375 288.375 Tm(But) Tj1 0 0 1 290.75 288.375 Tm(which) Tj1 0 0 1 318.25 288.375 Tm(pattern?) Tj1 0 0 1 356.125 288.375 Tm(To) Tj1 0 0 1 370.25 288.375 Tm(avoid) Tj1 0 0 1 395.5 288.375 Tm(comparing) Tj1 0 0 1 441.375 288.375 Tm(the) Tj1 0 0 1 456.625 288.375 Tm(substring) Tj1 0 0 1 496.25 288.375 Tm(to) Tj1 0 0 1 72 273.375 Tm(every) Tj1 0 0 1 97.125 273.375 Tm(pattern) Tj1 0 0 1 127.75 273.375 Tm(in) Tj1 0 0 1 138.25 273.375 Tm(the) Tj1 0 0 1 153.25 273.375 Tm(pattern) Tj1 0 0 1 183.875 273.375 Tm(list,) Tj1 0 0 1 201.25 273.375 Tm(we) Tj1 0 0 1 215.75 273.375 Tm(use) Tj1 0 0 1 231.875 273.375 Tm(a) Tj1 0 0 1 239.125 273.375 Tm(hashing) Tj1 0 0 1 273 273.375 Tm(technique) Tj1 0 0 1 314.75 273.375 Tm(to) Tj1 0 0 1 325.25 273.375 Tm(minimize) Tj1 0 0 1 365.875 273.375 Tm(the) Tj1 0 0 1 381 273.375 Tm(number) Tj1 0 0 1 414.5 273.375 Tm(of) Tj1 0 0 1 425.75 273.375 Tm(patterns) Tj1 0 0 1 460.375 273.375 Tm(to) Tj1 0 0 1 471 273.375 Tm(be) Tj1 0 0 1 483.375 273.375 Tm(com-) Tj1 0 0 1 72 258.375 Tm(pared.) Tj1 0 0 1 102.5 258.375 Tm(We) Tj1 0 0 1 119.625 258.375 Tm(already) Tj1 0 0 1 152.375 258.375 Tm(computed) Tj1 0 0 1 195 258.375 Tm(a) Tj1 0 0 1 202.625 258.375 Tm(mapping) Tj1 0 0 1 240.75 258.375 Tm(of) Tj1 0 0 1 252.25 258.375 Tm(the) Tj/R67 10 Tf1 0 0 1 267.625 258.375 Tm(B) Tj/R64 10 Tf1 0 0 1 276.875 258.375 Tm(characters) Tj1 0 0 1 320.875 258.375 Tm(into) Tj1 0 0 1 339.5 258.375 Tm(an) Tj1 0 0 1 352 258.375 Tm(integer) Tj1 0 0 1 382.875 258.375 Tm(that) Tj1 0 0 1 400.875 258.375 Tm(is) Tj1 0 0 1 410.5 258.375 Tm(used) Tj1 0 0 1 431.875 258.375 Tm(as) Tj1 0 0 1 443.25 258.375 Tm(an) Tj1 0 0 1 455.75 258.375 Tm(index) Tj1 0 0 1 481 258.375 Tm(to) Tj1 0 0 1 491.75 258.375 Tm(the) Tj1 0 0 1 72 243.375 Tm(SHIFT) Tj1 0 0 1 102.875 243.375 Tm(table.) Tj1 0 0 1 130.5 243.375 Tm(We) Tj1 0 0 1 147.625 243.375 Tm(use) Tj1 0 0 1 164.125 243.375 Tm(the) Tj1 0 0 1 179.625 243.375 Tm(exact) Tj1 0 0 1 204.125 243.375 Tm(same) Tj1 0 0 1 228 243.375 Tm(integer) Tj1 0 0 1 259.125 243.375 Tm(to) Tj1 0 0 1 270.125 243.375 Tm(index) Tj1 0 0 1 295.625 243.375 Tm(into) Tj1 0 0 1 314.375 243.375 Tm(another) Tj1 0 0 1 347.75 243.375 Tm(table,) Tj1 0 0 1 373 243.375 Tm(called) Tj1 0 0 1 400.25 243.375 Tm(HASH.) Tj1 0 0 1 435.75 243.375 Tm(The) Tj/R67 10 Tf1 0 0 1 454.625 243.375 Tm(i) Tj/R64 10 Tf1 0 0 1 457.375 243.375 Tm('th) Tj1 0 0 1 471.75 243.375 Tm(entry) Tj1 0 0 1 495.625 243.375 Tm(of) Tj1 0 0 1 72 228.375 Tm(the) Tj1 0 0 1 87.375 228.375 Tm(HASH) Tj1 0 0 1 117.75 228.375 Tm(table,) Tj1 0 0 1 142.875 228.375 Tm(HASH[) Tj/R67 10 Tf1 0 0 1 173.5 228.375 Tm(i) Tj/R64 10 Tf1 0 0 1 176.25 228.375 Tm(],) Tj1 0 0 1 185.25 228.375 Tm(contains) Tj1 0 0 1 221.75 228.375 Tm(a) Tj1 0 0 1 229.375 228.375 Tm(pointer) Tj1 0 0 1 260.875 228.375 Tm(to) Tj1 0 0 1 271.75 228.375 Tm(a) Tj1 0 0 1 279.375 228.375 Tm(list) Tj1 0 0 1 294.625 228.375 Tm(of) Tj1 0 0 1 306.125 228.375 Tm(patterns) Tj1 0 0 1 341 228.375 Tm(whose) Tj1 0 0 1 369.75 228.375 Tm(last) Tj/R67 10 Tf1 0 0 1 386.75 228.375 Tm(B) Tj/R64 10 Tf1 0 0 1 396 228.375 Tm(characters) Tj1 0 0 1 440 228.375 Tm(hash) Tj1 0 0 1 461.5 228.375 Tm(into) Tj/R67 10 Tf1 0 0 1 480.125 228.375 Tm(i) Tj/R64 10 Tf1 0 0 1 482.875 228.375 Tm(.) Tj1 0 0 1 488.375 228.375 Tm(The) Tj1 0 0 1 72 213.375 Tm(HASH) Tj1 0 0 1 101.75 213.375 Tm(table) Tj1 0 0 1 123.75 213.375 Tm(will) Tj1 0 0 1 141.75 213.375 Tm(typically) Tj1 0 0 1 179.25 213.375 Tm(be) Tj1 0 0 1 191.25 213.375 Tm(quite) Tj1 0 0 1 213.75 213.375 Tm(sparse,) Tj1 0 0 1 243.875 213.375 Tm(because) Tj1 0 0 1 278.25 213.375 Tm(it) Tj1 0 0 1 286.25 213.375 Tm(holds) Tj1 0 0 1 310.375 213.375 Tm(only) Tj1 0 0 1 330.625 213.375 Tm(the) Tj1 0 0 1 345.375 213.375 Tm(patterns) Tj1 0 0 1 379.625 213.375 Tm(whereas) Tj1 0 0 1 415.125 213.375 Tm(the) Tj1 0 0 1 429.875 213.375 Tm(SHIFT) Tj1 0 0 1 460.25 213.375 Tm(table) Tj1 0 0 1 482.375 213.375 Tm(holds) Tj1 0 0 1 72 198.375 Tm(all) Tj1 0 0 1 85 198.375 Tm(possible) Tj1 0 0 1 120.75 198.375 Tm(strings) Tj1 0 0 1 150.375 198.375 Tm(of) Tj1 0 0 1 161.75 198.375 Tm(size) Tj/R67 10 Tf1 0 0 1 180.375 198.375 Tm(B) Tj/R64 10 Tf1 0 0 1 186.5 198.375 Tm(.) Tj1 0 0 1 194.5 198.375 Tm(This) Tj1 0 0 1 215.25 198.375 Tm(is) Tj1 0 0 1 224.75 198.375 Tm(an) Tj1 0 0 1 237.125 198.375 Tm(inef\256cient) Tj1 0 0 1 280.625 198.375 Tm(use) Tj1 0 0 1 296.875 198.375 Tm(of) Tj1 0 0 1 308.125 198.375 Tm(memory,) Tj1 0 0 1 346.875 198.375 Tm(but) Tj1 0 0 1 362.5 198.375 Tm(it) Tj1 0 0 1 370.875 198.375 Tm(allows) Tj1 0 0 1 399.875 198.375 Tm(us) Tj1 0 0 1 411.625 198.375 Tm(to) Tj1 0 0 1 422.25 198.375 Tm(reuse) Tj1 0 0 1 446.375 198.375 Tm(the) Tj1 0 0 1 461.5 198.375 Tm(hash) Tj1 0 0 1 482.75 198.375 Tm(func-) Tj1 0 0 1 72 183.375 Tm(tion) Tj1 0 0 1 90.375 183.375 Tm(\(the) Tj1 0 0 1 108.875 183.375 Tm(mapping\),) Tj1 0 0 1 152.625 183.375 Tm(thus) Tj1 0 0 1 172.125 183.375 Tm(saving) Tj1 0 0 1 201.125 183.375 Tm(a) Tj1 0 0 1 208.5 183.375 Tm(lot) Tj1 0 0 1 221.875 183.375 Tm(of) Tj1 0 0 1 233.125 183.375 Tm(time.) Tj1 0 0 1 258.75 183.375 Tm(\(It) Tj1 0 0 1 271.125 183.375 Tm(is) Tj1 0 0 1 280.625 183.375 Tm(also) Tj1 0 0 1 299.625 183.375 Tm(possible) Tj1 0 0 1 335.25 183.375 Tm(to) Tj1 0 0 1 346 183.375 Tm(make) Tj1 0 0 1 370.75 183.375 Tm(the) Tj1 0 0 1 386 183.375 Tm(hash) Tj1 0 0 1 407.375 183.375 Tm(table) Tj1 0 0 1 429.875 183.375 Tm(a) Tj1 0 0 1 437.375 183.375 Tm(power) Tj1 0 0 1 465.5 183.375 Tm(of) Tj1 0 0 1 476.875 183.375 Tm(2) Tj1 0 0 1 484.875 183.375 Tm(frac-) Tj1 0 0 1 72 168.375 Tm(tion) Tj1 0 0 1 90 168.375 Tm(of) Tj1 0 0 1 100.875 168.375 Tm(the) Tj1 0 0 1 115.625 168.375 Tm(SHIFT) Tj1 0 0 1 145.875 168.375 Tm(table) Tj1 0 0 1 167.875 168.375 Tm(and) Tj1 0 0 1 184.875 168.375 Tm(take) Tj1 0 0 1 204.125 168.375 Tm(just) Tj1 0 0 1 221 168.375 Tm(the) Tj1 0 0 1 235.75 168.375 Tm(last) Tj1 0 0 1 252.125 168.375 Tm(bits) Tj1 0 0 1 269 168.375 Tm(of) Tj1 0 0 1 279.875 168.375 Tm(the) Tj1 0 0 1 294.625 168.375 Tm(hash) Tj1 0 0 1 315.5 168.375 Tm(function.\)) Tj1 0 0 1 97 149.25 Tm(Let) Tj/R67 10 Tf1 0 0 1 113.125 149.25 Tm(h) Tj/R64 10 Tf1 0 0 1 120.875 149.25 Tm(be) Tj1 0 0 1 133.125 149.25 Tm(the) Tj1 0 0 1 148.125 149.25 Tm(hash) Tj1 0 0 1 169.375 149.25 Tm(value) Tj1 0 0 1 194 149.25 Tm(of) Tj1 0 0 1 205.25 149.25 Tm(the) Tj1 0 0 1 220.375 149.25 Tm(current) Tj1 0 0 1 251.75 149.25 Tm(suf\256x) Tj1 0 0 1 277.375 149.25 Tm(in) Tj1 0 0 1 288 149.25 Tm(the) Tj1 0 0 1 303.125 149.25 Tm(text) Tj1 0 0 1 321 149.25 Tm(and) Tj1 0 0 1 338.375 149.25 Tm(assume) Tj1 0 0 1 370.75 149.25 Tm(that) Tj/R67 10 Tf1 0 0 1 388.625 149.25 Tm(SHIFT) Tj/R64 10 Tf1 0 0 1 417.5 149.25 Tm([) Tj/R67 10 Tf1 0 0 1 420.875 149.25 Tm(h) Tj/R64 10 Tf1 0 0 1 427.5 149.25 Tm(]) Tj/R74 10 Tf1 0 0 1 432.5 149.25 Tm(=) Tj/R64 10 Tf1 0 0 1 439.625 149.25 Tm(0.) Tj1 0 0 1 452.5 149.25 Tm(The) Tj1 0 0 1 471 149.25 Tm(value) Tj1 0 0 1 495.625 149.25 Tm(of) Tj/R67 10 Tf1 0 0 1 72 134.25 Tm(HASH) Tj/R64 10 Tf1 0 0 1 99.25 134.25 Tm([) Tj/R67 10 Tf1 0 0 1 102.625 134.25 Tm(h) Tj/R64 10 Tf1 0 0 1 109.25 134.25 Tm(]) Tj1 0 0 1 115.625 134.25 Tm(is) Tj1 0 0 1 125.25 134.25 Tm(a) Tj1 0 0 1 132.75 134.25 Tm(pointer) Tj/R67 10 Tf1 0 0 1 164.125 134.25 Tm(p) Tj/R64 10 Tf1 0 0 1 172.125 134.25 Tm(that) Tj1 0 0 1 190.125 134.25 Tm(points) Tj1 0 0 1 217.5 134.25 Tm(into) Tj1 0 0 1 236 134.25 Tm(two) Tj1 0 0 1 254 134.25 Tm(separate) Tj1 0 0 1 290 134.25 Tm(tables) Tj1 0 0 1 316.375 134.25 Tm(at) Tj1 0 0 1 326.625 134.25 Tm(the) Tj1 0 0 1 341.875 134.25 Tm(same) Tj1 0 0 1 365.375 134.25 Tm(time:) Tj1 0 0 1 388.75 134.25 Tm(We) Tj1 0 0 1 405.625 134.25 Tm(keep) Tj1 0 0 1 427.5 134.25 Tm(a) Tj1 0 0 1 434.875 134.25 Tm(list) Tj1 0 0 1 449.875 134.25 Tm(of) Tj1 0 0 1 461.125 134.25 Tm(pointers) Tj1 0 0 1 496.25 134.25 Tm(to) Tj1 0 0 1 72 119.25 Tm(the) Tj1 0 0 1 86.875 119.25 Tm(patterns,) Tj1 0 0 1 123.75 119.25 Tm(PAT_POINT,) Tj1 0 0 1 182.25 119.25 Tm(sorted) Tj1 0 0 1 209.375 119.25 Tm(by) Tj1 0 0 1 222 119.25 Tm(the) Tj1 0 0 1 236.875 119.25 Tm(hash) Tj1 0 0 1 257.875 119.25 Tm(values) Tj1 0 0 1 286.25 119.25 Tm(of) Tj1 0 0 1 297.375 119.25 Tm(the) Tj1 0 0 1 312.375 119.25 Tm(last) Tj/R67 10 Tf1 0 0 1 329 119.25 Tm(B) Tj/R64 10 Tf1 0 0 1 337.875 119.25 Tm(characters) Tj1 0 0 1 381.5 119.25 Tm(of) Tj1 0 0 1 392.625 119.25 Tm(each) Tj1 0 0 1 413.875 119.25 Tm(pattern.) Tj1 0 0 1 449.5 119.25 Tm(The) Tj1 0 0 1 467.875 119.25 Tm(pointer) Tj/R67 10 Tf1 0 0 1 499 119.25 Tm(p) Tj/R64 10 Tf1 0 0 1 72 104.25 Tm(points) Tj1 0 0 1 99.625 104.25 Tm(to) Tj1 0 0 1 110.625 104.25 Tm(the) Tj/R67 10 Tf1 0 0 1 126.125 104.25 Tm(beginning) Tj/R64 10 Tf1 0 0 1 169.375 104.25 Tm(of) Tj1 0 0 1 181 104.25 Tm(the) Tj1 0 0 1 196.5 104.25 Tm(list) Tj1 0 0 1 211.875 104.25 Tm(of) Tj1 0 0 1 223.5 104.25 Tm(patterns) Tj1 0 0 1 258.5 104.25 Tm(whose) Tj1 0 0 1 287.375 104.25 Tm(hash) Tj1 0 0 1 309 104.25 Tm(value) Tj1 0 0 1 334 104.25 Tm(is) Tj/R67 10 Tf1 0 0 1 343.875 104.25 Tm(h) Tj/R64 10 Tf1 0 0 1 348.875 104.25 Tm(.) Tj1 0 0 1 357.125 104.25 Tm(To) Tj1 0 0 1 371.5 104.25 Tm(\256nd) Tj1 0 0 1 390.25 104.25 Tm(the) Tj1 0 0 1 405.75 104.25 Tm(end) Tj1 0 0 1 423.375 104.25 Tm(of) Tj1 0 0 1 434.875 104.25 Tm(this) Tj1 0 0 1 452.375 104.25 Tm(list,) Tj1 0 0 1 470.125 104.25 Tm(we) Tj1 0 0 1 485 104.25 Tm(keep) Tj1 0 0 1 72 89.25 Tm(incrementing) Tj1 0 0 1 128.875 89.25 Tm(this) Tj1 0 0 1 147.25 89.25 Tm(pointer) Tj1 0 0 1 179.625 89.25 Tm(until) Tj1 0 0 1 201.875 89.25 Tm(it) Tj1 0 0 1 211.375 89.25 Tm(is) Tj1 0 0 1 222 89.25 Tm(equal) Tj1 0 0 1 247.75 89.25 Tm(to) Tj1 0 0 1 259.5 89.25 Tm(the) Tj1 0 0 1 275.75 89.25 Tm(value) Tj1 0 0 1 301.5 89.25 Tm(in) Tj/R67 10 Tf1 0 0 1 313.25 89.25 Tm(HASH) Tj/R64 10 Tf1 0 0 1 340.5 89.25 Tm([) Tj/R67 10 Tf1 0 0 1 343.875 89.25 Tm(h) Tj/R74 10 Tf1 0 0 1 350.5 89.25 Tm(+) Tj/R64 10 Tf1 0 0 1 356 89.25 Tm(1]) Tj1 0 0 1 368.375 89.25 Tm(\(because) Tj1 0 0 1 407.625 89.25 Tm(the) Tj1 0 0 1 423.875 89.25 Tm(whole) Tj1 0 0 1 452.5 89.25 Tm(list) Tj1 0 0 1 468.75 89.25 Tm(is) Tj1 0 0 1 479.5 89.25 Tm(sorted) TjETQendstreamendobj80 0 obj19567endobj81 0 obj>>/Contents [62 0 R65 0 R68 0 R72 0 R75 0 R79 0 R]>>endobj82 0 obj>endobj83 0 obj>streamqBT/R82 10 Tf1 0 0 1 285.5 705 Tm(5) TjETendstreamendobj84 0 obj47endobj85 0 obj>endobj86 0 obj>streamBT/R85 10 Tf1 0 0 1 72 669 Tm(according) Tj1 0 0 1 114.875 669 Tm(to) Tj1 0 0 1 125.875 669 Tm(the) Tj1 0 0 1 141.375 669 Tm(hash) Tj1 0 0 1 163 669 Tm(values\).) Tj1 0 0 1 200.125 669 Tm(So,) Tj1 0 0 1 216.25 669 Tm(for) Tj1 0 0 1 231.125 669 Tm(example,) Tj1 0 0 1 270.75 669 Tm(if) TjETendstreamendobj87 0 obj310endobj88 0 obj>endobj89 0 obj>streamBT/R88 10 Tf1 0 0 1 280 669 Tm(SHIFT) Tj/R85 10 Tf1 0 0 1 308.875 669 Tm([) Tj/R88 10 Tf1 0 0 1 312.25 669 Tm(h) Tj/R85 10 Tf1 0 0 1 318.875 669 Tm(]) TjETendstreamendobj90 0 obj169endobj91 0 obj]>>stream2,LpYrP*:*pAM`a"J>Kd?Ji6Zhfmnk2?]ZJ&hAFg\*a'Ahm\;J5Qh'P~>endstreamendobj92 0 obj58endobj93 0 obj>streamq5.6 0 0 -5.7 323.7 674.5 cm/R91 DoQBT1 0 0 1 331 669 Tm(0,) Tj1 0 0 1 341.625 669 Tm(then) Tj/R88 10 Tf1 0 0 1 362 669 Tm(HASH) Tj/R85 10 Tf1 0 0 1 389.25 669 Tm([) Tj/R88 10 Tf1 0 0 1 392.625 669 Tm(h) Tj/R85 10 Tf1 0 0 1 399.25 669 Tm(]) Tj1 0 0 1 405.75 669 Tm(=) Tj/R88 10 Tf1 0 0 1 414.5 669 Tm(HASH) Tj/R85 10 Tf1 0 0 1 441.75 669 Tm([) Tj/R88 10 Tf1 0 0 1 445.125 669 Tm(h) TjETendstreamendobj94 0 obj419endobj95 0 obj>endobj96 0 obj>streamBT/R95 10 Tf1 0 0 1 451.75 669 Tm(+) Tj/R85 10 Tf1 0 0 1 457.25 669 Tm(1]) Tj1 0 0 1 468.75 669 Tm(\(because) Tj1 0 0 1 72 654 Tm(no) Tj1 0 0 1 84.5 654 Tm(pattern) Tj1 0 0 1 114.875 654 Tm(has) Tj1 0 0 1 130.75 654 Tm(a) Tj1 0 0 1 137.75 654 Tm(suf\256x) Tj1 0 0 1 163 654 Tm(that) Tj1 0 0 1 180.5 654 Tm(hash) Tj1 0 0 1 201.5 654 Tm(to) Tj/R88 10 Tf1 0 0 1 211.875 654 Tm(h) Tj/R85 10 Tf1 0 0 1 216.875 654 Tm(\).) Tj1 0 0 1 227.875 654 Tm(In) Tj1 0 0 1 238.875 654 Tm(addition,) Tj1 0 0 1 276.75 654 Tm(we) Tj1 0 0 1 291.125 654 Tm(keep) Tj1 0 0 1 312.75 654 Tm(a) Tj1 0 0 1 319.875 654 Tm(table) Tj1 0 0 1 342 654 Tm(called) Tj1 0 0 1 368.625 654 Tm(PREFIX,) Tj1 0 0 1 408.125 654 Tm(which) Tj1 0 0 1 435.25 654 Tm(will) Tj1 0 0 1 453.375 654 Tm(be) Tj1 0 0 1 465.5 654 Tm(described) Tj1 0 0 1 72 639 Tm(shortly.) Tj1 0 0 1 97 619.875 Tm(Natural) Tj1 0 0 1 130.125 619.875 Tm(language) Tj1 0 0 1 169.375 619.875 Tm(texts) Tj1 0 0 1 191.25 619.875 Tm(are) Tj1 0 0 1 206.625 619.875 Tm(not) Tj1 0 0 1 222.375 619.875 Tm(random.) Tj1 0 0 1 258.625 619.875 Tm(For) Tj1 0 0 1 275.625 619.875 Tm(example,) Tj1 0 0 1 315.25 619.875 Tm(the) Tj1 0 0 1 330.625 619.875 Tm(suf\256xes) Tj1 0 0 1 364.875 619.875 Tm(`ion') Tj1 0 0 1 387.5 619.875 Tm(or) Tj1 0 0 1 399 619.875 Tm(`ing') Tj1 0 0 1 421.625 619.875 Tm(are) Tj1 0 0 1 437.125 619.875 Tm(very) Tj1 0 0 1 458.125 619.875 Tm(common) Tj1 0 0 1 496.25 619.875 Tm(in) Tj1 0 0 1 72 604.875 Tm(English) Tj1 0 0 1 105.5 604.875 Tm(texts.) Tj1 0 0 1 132.375 604.875 Tm(These) Tj1 0 0 1 159.375 604.875 Tm(suf\256xes) Tj1 0 0 1 193.5 604.875 Tm(will) Tj1 0 0 1 212 604.875 Tm(not) Tj1 0 0 1 227.75 604.875 Tm(only) Tj1 0 0 1 248.5 604.875 Tm(appear) Tj1 0 0 1 278.375 604.875 Tm(quite) Tj1 0 0 1 301.25 604.875 Tm(often) Tj1 0 0 1 324.75 604.875 Tm(in) Tj1 0 0 1 335.375 604.875 Tm(the) Tj1 0 0 1 350.5 604.875 Tm(text,) Tj1 0 0 1 370.875 604.875 Tm(but) Tj1 0 0 1 386.5 604.875 Tm(they) Tj1 0 0 1 406.625 604.875 Tm(are) Tj1 0 0 1 421.875 604.875 Tm(also) Tj1 0 0 1 440.875 604.875 Tm(likely) Tj1 0 0 1 466.5 604.875 Tm(to) Tj1 0 0 1 477.125 604.875 Tm(appear) Tj1 0 0 1 72 589.875 Tm(in) Tj1 0 0 1 82.625 589.875 Tm(several) Tj1 0 0 1 114 589.875 Tm(of) Tj1 0 0 1 125.25 589.875 Tm(the) Tj1 0 0 1 140.375 589.875 Tm(patterns.) Tj1 0 0 1 180 589.875 Tm(They) Tj1 0 0 1 203.5 589.875 Tm(will) Tj1 0 0 1 221.875 589.875 Tm(cause) Tj1 0 0 1 247.125 589.875 Tm(collisions) Tj1 0 0 1 288.25 589.875 Tm(in) Tj1 0 0 1 298.875 589.875 Tm(the) Tj1 0 0 1 314 589.875 Tm(HASH) Tj1 0 0 1 344.25 589.875 Tm(table;) Tj1 0 0 1 369.5 589.875 Tm(that) Tj1 0 0 1 387.5 589.875 Tm(is,) Tj1 0 0 1 399.625 589.875 Tm(all) Tj1 0 0 1 412.625 589.875 Tm(patterns) Tj1 0 0 1 447.375 589.875 Tm(with) Tj1 0 0 1 468.125 589.875 Tm(the) Tj1 0 0 1 483.375 589.875 Tm(same) Tj1 0 0 1 72 574.875 Tm(suf\256x) Tj1 0 0 1 97.875 574.875 Tm(will) Tj1 0 0 1 116.5 574.875 Tm(be) Tj1 0 0 1 129.125 574.875 Tm(mapped) Tj1 0 0 1 164 574.875 Tm(to) Tj1 0 0 1 174.875 574.875 Tm(the) Tj1 0 0 1 190.25 574.875 Tm(same) Tj1 0 0 1 214 574.875 Tm(entry) Tj1 0 0 1 237.75 574.875 Tm(in) Tj1 0 0 1 248.5 574.875 Tm(the) Tj1 0 0 1 263.75 574.875 Tm(HASH) Tj1 0 0 1 294 574.875 Tm(table.) Tj1 0 0 1 321.5 574.875 Tm(When) Tj1 0 0 1 348.5 574.875 Tm(we) Tj1 0 0 1 363.25 574.875 Tm(encounter) Tj1 0 0 1 405.875 574.875 Tm(such) Tj1 0 0 1 427.25 574.875 Tm(a) Tj1 0 0 1 434.75 574.875 Tm(suf\256x) Tj1 0 0 1 460.5 574.875 Tm(in) Tj1 0 0 1 471.25 574.875 Tm(the) Tj1 0 0 1 486.5 574.875 Tm(text,) Tj1 0 0 1 72 559.875 Tm(we) Tj1 0 0 1 86.5 559.875 Tm(will) Tj1 0 0 1 104.75 559.875 Tm(\256nd) Tj1 0 0 1 123 559.875 Tm(that) Tj1 0 0 1 140.75 559.875 Tm(its) Tj1 0 0 1 152.875 559.875 Tm(SHIFT) Tj1 0 0 1 183.375 559.875 Tm(value) Tj1 0 0 1 208 559.875 Tm(is) Tj1 0 0 1 217.5 559.875 Tm(0) Tj1 0 0 1 225.375 559.875 Tm(\(assuming) Tj1 0 0 1 269.375 559.875 Tm(it) Tj1 0 0 1 277.75 559.875 Tm(is) Tj1 0 0 1 287.25 559.875 Tm(a) Tj1 0 0 1 294.625 559.875 Tm(suf\256x) Tj1 0 0 1 320.25 559.875 Tm(of) Tj1 0 0 1 331.5 559.875 Tm(some) Tj1 0 0 1 355.5 559.875 Tm(patterns\),) Tj1 0 0 1 396 559.875 Tm(and) Tj1 0 0 1 413.375 559.875 Tm(we) Tj1 0 0 1 428 559.875 Tm(will) Tj1 0 0 1 446.375 559.875 Tm(have) Tj1 0 0 1 468.25 559.875 Tm(to) Tj1 0 0 1 478.875 559.875 Tm(exam-) Tj1 0 0 1 72 544.875 Tm(ine) Tj1 0 0 1 87.625 544.875 Tm(separately) Tj1 0 0 1 131.75 544.875 Tm(all) Tj1 0 0 1 145.125 544.875 Tm(the) Tj1 0 0 1 160.75 544.875 Tm(patterns) Tj1 0 0 1 195.875 544.875 Tm(with) Tj1 0 0 1 217 544.875 Tm(this) Tj1 0 0 1 234.75 544.875 Tm(suf\256x) Tj1 0 0 1 260.875 544.875 Tm(to) Tj1 0 0 1 272 544.875 Tm(see) Tj1 0 0 1 288.25 544.875 Tm(if) Tj1 0 0 1 297.75 544.875 Tm(they) Tj1 0 0 1 318.375 544.875 Tm(match) Tj1 0 0 1 346.25 544.875 Tm(the) Tj1 0 0 1 361.75 544.875 Tm(text.) Tj1 0 0 1 385 544.875 Tm(To) Tj1 0 0 1 399.375 544.875 Tm(speed) Tj1 0 0 1 425.5 544.875 Tm(up) Tj1 0 0 1 438.75 544.875 Tm(this) Tj1 0 0 1 456.375 544.875 Tm(process,) Tj1 0 0 1 492.25 544.875 Tm(we) Tj1 0 0 1 72 529.875 Tm(introduce) Tj1 0 0 1 112.375 529.875 Tm(yet) Tj1 0 0 1 127.125 529.875 Tm(another) Tj1 0 0 1 159.75 529.875 Tm(table,) Tj1 0 0 1 184.25 529.875 Tm(called) Tj1 0 0 1 210.75 529.875 Tm(PREFIX.) Tj1 0 0 1 97 510.75 Tm(In) Tj1 0 0 1 108.25 510.75 Tm(addition) Tj1 0 0 1 143.875 510.75 Tm(to) Tj1 0 0 1 154.5 510.75 Tm(mapping) Tj1 0 0 1 192.5 510.75 Tm(the) Tj1 0 0 1 207.75 510.75 Tm(last) Tj/R88 10 Tf1 0 0 1 224.625 510.75 Tm(B) Tj/R85 10 Tf1 0 0 1 233.75 510.75 Tm(characters) Tj1 0 0 1 277.625 510.75 Tm(of) Tj1 0 0 1 289 510.75 Tm(all) Tj1 0 0 1 302 510.75 Tm(patterns,) Tj1 0 0 1 339.25 510.75 Tm(we) Tj1 0 0 1 354 510.75 Tm(also) Tj1 0 0 1 373.125 510.75 Tm(map) Tj1 0 0 1 393.375 510.75 Tm(the) Tj/R88 10 Tf1 0 0 1 408.625 510.75 Tm(\256rst) Tj1 0 0 1 427.125 510.75 Tm(B) TjETendstreamendobj97 0 obj6126endobj98 0 obj]>>stream3UYbkmb[@!hY1sCh7_S"YA+%[!W~>endstreamendobj99 0 obj30endobj100 0 obj>streamq2.5 0 0 -2.5 433.1 518.1 cm/R98 DoQBT/R85 10 Tf1 0 0 1 438.75 510.75 Tm(characters) Tj1 0 0 1 482.625 510.75 Tm(of) Tj1 0 0 1 494 510.75 Tm(all) Tj1 0 0 1 72 495.75 Tm(patterns) Tj1 0 0 1 106.625 495.75 Tm(into) Tj1 0 0 1 125 495.75 Tm(the) Tj1 0 0 1 140.125 495.75 Tm(PREFIX) Tj1 0 0 1 177.375 495.75 Tm(table.) Tj1 0 0 1 204.75 495.75 Tm(\(We) Tj1 0 0 1 224.875 495.75 Tm(found) Tj1 0 0 1 251 495.75 Tm(that) Tj/R88 10 Tf1 0 0 1 268.75 495.75 Tm(B) TjETq2.5 0 0 -2.5 274.7 503.1 cm/R98 DoQBT/R95 10 Tf1 0 0 1 279 495.75 Tm(=) Tj/R85 10 Tf1 0 0 1 286.125 495.75 Tm(2) Tj1 0 0 1 293.875 495.75 Tm(is) Tj1 0 0 1 303.25 495.75 Tm(a) Tj1 0 0 1 310.5 495.75 Tm(good) Tj1 0 0 1 333.25 495.75 Tm(value.\)) Tj1 0 0 1 366.125 495.75 Tm(When) Tj1 0 0 1 392.875 495.75 Tm(we) Tj1 0 0 1 407.375 495.75 Tm(\256nd) Tj1 0 0 1 425.625 495.75 Tm(a) Tj1 0 0 1 432.875 495.75 Tm(SHIFT) Tj1 0 0 1 463.375 495.75 Tm(value) Tj1 0 0 1 487.875 495.75 Tm(of) Tj1 0 0 1 499 495.75 Tm(0) Tj1 0 0 1 72 480.75 Tm(and) Tj1 0 0 1 89.625 480.75 Tm(we) Tj1 0 0 1 104.5 480.75 Tm(go) Tj1 0 0 1 117.625 480.75 Tm(to) Tj1 0 0 1 128.5 480.75 Tm(the) Tj1 0 0 1 143.875 480.75 Tm(HASH) Tj1 0 0 1 174.25 480.75 Tm(table) Tj1 0 0 1 196.875 480.75 Tm(to) Tj1 0 0 1 207.75 480.75 Tm(determine) Tj1 0 0 1 251.125 480.75 Tm(if) Tj1 0 0 1 260.5 480.75 Tm(there) Tj1 0 0 1 283.875 480.75 Tm(is) Tj1 0 0 1 293.75 480.75 Tm(a) Tj1 0 0 1 301.5 480.75 Tm(match,) Tj1 0 0 1 331.75 480.75 Tm(we) Tj1 0 0 1 346.75 480.75 Tm(check) Tj1 0 0 1 373.5 480.75 Tm(the) Tj1 0 0 1 389 480.75 Tm(values) Tj1 0 0 1 417.875 480.75 Tm(in) Tj1 0 0 1 428.875 480.75 Tm(the) Tj1 0 0 1 444.375 480.75 Tm(PREFIX) Tj1 0 0 1 482 480.75 Tm(table.) Tj1 0 0 1 72 465.75 Tm(The) Tj1 0 0 1 90.875 465.75 Tm(HASH) Tj1 0 0 1 121.375 465.75 Tm(table) Tj1 0 0 1 144.125 465.75 Tm(not) Tj1 0 0 1 160.125 465.75 Tm(only) Tj1 0 0 1 181.125 465.75 Tm(contains,) Tj1 0 0 1 220.25 465.75 Tm(for) Tj1 0 0 1 235.25 465.75 Tm(each) Tj1 0 0 1 257 465.75 Tm(suf\256x,) Tj1 0 0 1 285.5 465.75 Tm(the) Tj1 0 0 1 300.875 465.75 Tm(list) Tj1 0 0 1 316.125 465.75 Tm(of) Tj1 0 0 1 327.625 465.75 Tm(all) Tj1 0 0 1 340.75 465.75 Tm(patterns) Tj1 0 0 1 375.625 465.75 Tm(with) Tj1 0 0 1 396.5 465.75 Tm(this) Tj1 0 0 1 414 465.75 Tm(suf\256x,) Tj1 0 0 1 442.375 465.75 Tm(but) Tj1 0 0 1 458.25 465.75 Tm(it) Tj1 0 0 1 466.875 465.75 Tm(also) Tj1 0 0 1 486.125 465.75 Tm(con-) Tj1 0 0 1 72 450.75 Tm(tains) Tj1 0 0 1 94.125 450.75 Tm(\(hash) Tj1 0 0 1 119.125 450.75 Tm(values) Tj1 0 0 1 148 450.75 Tm(of\)) Tj1 0 0 1 163 450.75 Tm(their) Tj1 0 0 1 184.625 450.75 Tm(pre\256xes.) Tj1 0 0 1 224.625 450.75 Tm(We) Tj1 0 0 1 241.875 450.75 Tm(compute) Tj1 0 0 1 279.75 450.75 Tm(the) Tj1 0 0 1 295.375 450.75 Tm(corresponding) Tj1 0 0 1 356.125 450.75 Tm(pre\256x) Tj1 0 0 1 382.875 450.75 Tm(in) Tj1 0 0 1 394 450.75 Tm(the) Tj1 0 0 1 409.625 450.75 Tm(text) Tj1 0 0 1 428 450.75 Tm(\(by) Tj1 0 0 1 444.75 450.75 Tm(shifting) Tj/R88 10 Tf1 0 0 1 478.625 450.75 Tm(m) TjETendstreamendobj101 0 obj3158endobj102 0 obj]>>stream0Ee$C!.Y=~>endstreamendobj103 0 obj12endobj104 0 obj>streamq5.5 0 0 -0.6 488.1 453.8 cm/R102 DoQBT1 0 0 1 495.375 450.75 Tm(B) TjETq2.5 0 0 -2.5 501.3 458.1 cm/R98 DoQBT/R85 10 Tf1 0 0 1 72 435.75 Tm(characters) Tj1 0 0 1 116.625 435.75 Tm(to) Tj1 0 0 1 128.125 435.75 Tm(the) Tj1 0 0 1 144.125 435.75 Tm(left\)) Tj1 0 0 1 164.5 435.75 Tm(and) Tj1 0 0 1 182.625 435.75 Tm(use) Tj1 0 0 1 199.625 435.75 Tm(it) Tj1 0 0 1 208.75 435.75 Tm(to) Tj1 0 0 1 220.125 435.75 Tm(\256lter) Tj1 0 0 1 242.625 435.75 Tm(patterns) Tj1 0 0 1 278 435.75 Tm(whose) Tj1 0 0 1 307.25 435.75 Tm(suf\256x) Tj1 0 0 1 333.625 435.75 Tm(is) Tj1 0 0 1 343.875 435.75 Tm(the) Tj1 0 0 1 359.75 435.75 Tm(same) Tj1 0 0 1 384 435.75 Tm(but) Tj1 0 0 1 400.375 435.75 Tm(whose) Tj1 0 0 1 429.625 435.75 Tm(pre\256x) Tj1 0 0 1 456.625 435.75 Tm(is) Tj1 0 0 1 466.875 435.75 Tm(different.) Tj1 0 0 1 72 420.75 Tm(This) Tj1 0 0 1 93 420.75 Tm(is) Tj1 0 0 1 102.875 420.75 Tm(an) Tj1 0 0 1 115.625 420.75 Tm(effective) Tj1 0 0 1 154.125 420.75 Tm(\256ltering) Tj1 0 0 1 189 420.75 Tm(method) Tj1 0 0 1 222.25 420.75 Tm(because) Tj1 0 0 1 257.375 420.75 Tm(it) Tj1 0 0 1 266.125 420.75 Tm(is) Tj1 0 0 1 276 420.75 Tm(much) Tj1 0 0 1 301.5 420.75 Tm(less) Tj1 0 0 1 319.75 420.75 Tm(common) Tj1 0 0 1 358 420.75 Tm(to) Tj1 0 0 1 369 420.75 Tm(have) Tj1 0 0 1 391.25 420.75 Tm(different) Tj1 0 0 1 429.25 420.75 Tm(patterns) Tj1 0 0 1 464.375 420.75 Tm(that) Tj1 0 0 1 482.75 420.75 Tm(share) Tj1 0 0 1 72 405.75 Tm(the) Tj1 0 0 1 88.25 405.75 Tm(same) Tj1 0 0 1 112.875 405.75 Tm(pre\256x) Tj/R88 10 Tf1 0 0 1 140.25 405.75 Tm(and) Tj/R85 10 Tf1 0 0 1 159.25 405.75 Tm(the) Tj1 0 0 1 175.5 405.75 Tm(same) Tj1 0 0 1 200.125 405.75 Tm(suf\256x.) Tj1 0 0 1 231.875 405.75 Tm(It) Tj1 0 0 1 242 405.75 Tm(is) Tj1 0 0 1 252.625 405.75 Tm(also) Tj1 0 0 1 272.75 405.75 Tm(a) Tj1 0 0 1 281.25 405.75 Tm(good) Tj1 0 0 1 305.25 405.75 Tm(`balancing) Tj1 0 0 1 351.625 405.75 Tm(act') Tj1 0 0 1 370.75 405.75 Tm(in) Tj1 0 0 1 382.5 405.75 Tm(the) Tj1 0 0 1 398.75 405.75 Tm(sense) Tj1 0 0 1 424.375 405.75 Tm(that) Tj1 0 0 1 443.25 405.75 Tm(the) Tj1 0 0 1 459.375 405.75 Tm(extra) Tj1 0 0 1 483.375 405.75 Tm(work) Tj1 0 0 1 72 390.75 Tm(involved) Tj1 0 0 1 110.375 390.75 Tm(in) Tj1 0 0 1 121.5 390.75 Tm(computing) Tj1 0 0 1 167.625 390.75 Tm(the) Tj1 0 0 1 183.25 390.75 Tm(hash) Tj1 0 0 1 205 390.75 Tm(function) Tj1 0 0 1 241.75 390.75 Tm(of) Tj1 0 0 1 253.5 390.75 Tm(the) Tj1 0 0 1 269.125 390.75 Tm(pre\256xes) Tj1 0 0 1 304.25 390.75 Tm(is) Tj1 0 0 1 314.25 390.75 Tm(signi\256cant) Tj1 0 0 1 359.25 390.75 Tm(only) Tj1 0 0 1 380.375 390.75 Tm(if) Tj1 0 0 1 390 390.75 Tm(the) Tj1 0 0 1 405.75 390.75 Tm(SHIFT) Tj1 0 0 1 437 390.75 Tm(value) Tj1 0 0 1 462.25 390.75 Tm(is) Tj1 0 0 1 472.375 390.75 Tm(often) Tj1 0 0 1 496.5 390.75 Tm(0,) Tj1 0 0 1 72 375.75 Tm(which) Tj1 0 0 1 99 375.75 Tm(occurs) Tj1 0 0 1 127.75 375.75 Tm(when) Tj1 0 0 1 152 375.75 Tm(there) Tj1 0 0 1 174.625 375.75 Tm(are) Tj1 0 0 1 189.5 375.75 Tm(many) Tj1 0 0 1 214.25 375.75 Tm(patterns) Tj1 0 0 1 248.5 375.75 Tm(and) Tj1 0 0 1 265.5 375.75 Tm(a) Tj1 0 0 1 272.5 375.75 Tm(higher) Tj1 0 0 1 300.625 375.75 Tm(likelihood) Tj1 0 0 1 343.625 375.75 Tm(of) Tj1 0 0 1 354.5 375.75 Tm(collisions.) Tj1 0 0 1 97 356.625 Tm(The) Tj1 0 0 1 116.5 356.625 Tm(preprocessing) Tj1 0 0 1 176.125 356.625 Tm(stage) Tj1 0 0 1 200.625 356.625 Tm(may) Tj1 0 0 1 221.75 356.625 Tm(seem) Tj1 0 0 1 246.375 356.625 Tm(quite) Tj1 0 0 1 270.375 356.625 Tm(involved,) Tj1 0 0 1 311.875 356.625 Tm(but) Tj1 0 0 1 328.625 356.625 Tm(in) Tj1 0 0 1 340.375 356.625 Tm(practice) Tj1 0 0 1 376.25 356.625 Tm(it) Tj1 0 0 1 385.75 356.625 Tm(is) Tj1 0 0 1 396.375 356.625 Tm(done) Tj1 0 0 1 419.875 356.625 Tm(very) Tj1 0 0 1 441.75 356.625 Tm(quickly.) Tj1 0 0 1 478.25 356.625 Tm(In) Tj1 0 0 1 490.625 356.625 Tm(our) Tj1 0 0 1 72 341.625 Tm(implementation,) Tj1 0 0 1 141.125 341.625 Tm(we) Tj1 0 0 1 156.75 341.625 Tm(set) Tj1 0 0 1 171.75 341.625 Tm(the) Tj1 0 0 1 187.875 341.625 Tm(size) Tj1 0 0 1 207.375 341.625 Tm(of) Tj1 0 0 1 219.625 341.625 Tm(the) Tj1 0 0 1 235.75 341.625 Tm(3) Tj1 0 0 1 244.625 341.625 Tm(tables) Tj1 0 0 1 271.875 341.625 Tm(to) Tj1 0 0 1 283.5 341.625 Tm(2) Tj/R85 7 Tf1 0 0 1 288.5 345.625 Tm(15) Tj/R95 10 Tf1 0 0 1 297.875 341.625 Tm(=) Tj/R85 10 Tf1 0 0 1 305 341.625 Tm(32768.) Tj1 0 0 1 338.875 341.625 Tm(Running) Tj1 0 0 1 377.125 341.625 Tm(the) Tj1 0 0 1 393.25 341.625 Tm(match) Tj1 0 0 1 421.625 341.625 Tm(algorithm) Tj1 0 0 1 464.375 341.625 Tm(on) Tj1 0 0 1 478.25 341.625 Tm(a) Tj1 0 0 1 486.625 341.625 Tm(near) Tj1 0 0 1 72 326.625 Tm(empty) Tj1 0 0 1 99.875 326.625 Tm(text) Tj1 0 0 1 117.75 326.625 Tm(\256le,) Tj1 0 0 1 135.875 326.625 Tm(which) Tj1 0 0 1 163.25 326.625 Tm(is) Tj1 0 0 1 172.75 326.625 Tm(a) Tj1 0 0 1 180.125 326.625 Tm(measure) Tj1 0 0 1 216.5 326.625 Tm(of) Tj1 0 0 1 227.75 326.625 Tm(the) Tj1 0 0 1 242.875 326.625 Tm(time) Tj1 0 0 1 263.5 326.625 Tm(it) Tj1 0 0 1 271.875 326.625 Tm(takes) Tj1 0 0 1 295.375 326.625 Tm(to) Tj1 0 0 1 306 326.625 Tm(do) Tj1 0 0 1 319 326.625 Tm(the) Tj1 0 0 1 334.25 326.625 Tm(preprocessing,) Tj1 0 0 1 395.5 326.625 Tm(took) Tj1 0 0 1 416.25 326.625 Tm(only) Tj1 0 0 1 437 326.625 Tm(0.16) Tj1 0 0 1 457.5 326.625 Tm(seconds) Tj1 0 0 1 492.25 326.625 Tm(for) Tj1 0 0 1 72 311.625 Tm(10,000) Tj1 0 0 1 102 311.625 Tm(patterns.) TjETendstreamendobj105 0 obj5616endobj106 0 obj>endobj107 0 obj>streamBT/R106 12 Tf1 0 0 1 72 281.625 Tm(2.3.) Tj1 0 0 1 98.75 281.625 Tm(The) Tj1 0 0 1 123.5 281.625 Tm(Scanning) Tj1 0 0 1 181 281.625 Tm(Stage) Tj/R85 10 Tf1 0 0 1 72 262.5 Tm(We) Tj1 0 0 1 89.5 262.5 Tm(now) Tj1 0 0 1 110.25 262.5 Tm(describe) Tj1 0 0 1 147.25 262.5 Tm(the) Tj1 0 0 1 163 262.5 Tm(scanning) Tj1 0 0 1 202.125 262.5 Tm(stage) Tj1 0 0 1 226.25 262.5 Tm(in) Tj1 0 0 1 237.5 262.5 Tm(more) Tj1 0 0 1 261.625 262.5 Tm(detail) Tj1 0 0 1 287.375 262.5 Tm(and) Tj1 0 0 1 305.375 262.5 Tm(give) Tj1 0 0 1 326.125 262.5 Tm(a) Tj1 0 0 1 334.125 262.5 Tm(partial) Tj1 0 0 1 363.375 262.5 Tm(code) Tj1 0 0 1 386 262.5 Tm(for) Tj1 0 0 1 401.375 262.5 Tm(it.) Tj1 0 0 1 415.5 262.5 Tm(The) Tj1 0 0 1 434.75 262.5 Tm(main) Tj1 0 0 1 458.375 262.5 Tm(loop) Tj1 0 0 1 479.75 262.5 Tm(of) Tj1 0 0 1 491.75 262.5 Tm(the) Tj1 0 0 1 72 247.5 Tm(algorithm) Tj1 0 0 1 113.375 247.5 Tm(consists) Tj1 0 0 1 147.5 247.5 Tm(of) Tj1 0 0 1 158.375 247.5 Tm(the) Tj1 0 0 1 173.125 247.5 Tm(following) Tj1 0 0 1 214.5 247.5 Tm(steps:) Tj1 0 0 1 72 228.375 Tm(1.) Tj1 0 0 1 97 228.375 Tm(compute) Tj1 0 0 1 134 228.375 Tm(a) Tj1 0 0 1 141 228.375 Tm(hash) Tj1 0 0 1 161.875 228.375 Tm(value) Tj/R88 10 Tf1 0 0 1 186.125 228.375 Tm(h) Tj/R85 10 Tf1 0 0 1 193.625 228.375 Tm(based) Tj1 0 0 1 219 228.375 Tm(on) Tj1 0 0 1 231.5 228.375 Tm(the) Tj1 0 0 1 246.25 228.375 Tm(current) Tj/R88 10 Tf1 0 0 1 277.25 228.375 Tm(B) Tj/R85 10 Tf1 0 0 1 285.875 228.375 Tm(characters) Tj1 0 0 1 329.25 228.375 Tm(from) Tj1 0 0 1 351.25 228.375 Tm(the) Tj1 0 0 1 366 228.375 Tm(text) Tj1 0 0 1 383.5 228.375 Tm(\(starting) Tj1 0 0 1 419.375 228.375 Tm(with) Tj/R88 10 Tf1 0 0 1 439.625 228.375 Tm(t) Tj/R88 7 Tf1 0 0 1 442.375 226.375 Tm(m) TjETendstreamendobj108 0 obj1822endobj109 0 obj]>>stream4;siB#QTA~>endstreamendobj110 0 obj12endobj111 0 obj>streamq4.2 0 0 -0.4 448 228.5 cm/R109 DoQBT1 0 0 1 452.375 226.375 Tm(B) Tj/R95 7 Tf1 0 0 1 457.75 226.375 Tm(+) Tj/R85 7 Tf1 0 0 1 461.625 226.375 Tm(1) Tj/R85 10 Tf1 0 0 1 468.375 231.375 Tm(.) Tj1 0 0 1 473.375 231.375 Tm(.) Tj1 0 0 1 478.375 231.375 Tm(.) Tj/R88 10 Tf1 0 0 1 483.375 228.375 Tm(t) Tj/R88 7 Tf1 0 0 1 486.125 226.375 Tm(m) Tj/R85 10 Tf1 0 0 1 491.875 228.375 Tm(\).) Tj1 0 0 1 72 209.25 Tm(2.) Tj1 0 0 1 97 209.25 Tm(check) Tj1 0 0 1 123 209.25 Tm(the) Tj1 0 0 1 137.75 209.25 Tm(value) Tj1 0 0 1 162 209.25 Tm(of) Tj1 0 0 1 172.875 209.25 Tm(SHIFT[h]:) Tj1 0 0 1 220.125 209.25 Tm(if) Tj1 0 0 1 228.75 209.25 Tm(it) Tj1 0 0 1 236.75 209.25 Tm(is) Tj1 0 0 1 245.875 209.25 Tm(>) Tj1 0 0 1 254 209.25 Tm(0,) Tj1 0 0 1 264 209.25 Tm(shift) Tj1 0 0 1 284.25 209.25 Tm(the) Tj1 0 0 1 299 209.25 Tm(text) Tj1 0 0 1 316.5 209.25 Tm(and) Tj1 0 0 1 333.5 209.25 Tm(go) Tj1 0 0 1 346 209.25 Tm(back) Tj1 0 0 1 367.5 209.25 Tm(to) Tj1 0 0 1 377.75 209.25 Tm(1;) Tj1 0 0 1 390.5 209.25 Tm(otherwise,) Tj1 0 0 1 434.5 209.25 Tm(go) Tj1 0 0 1 447 209.25 Tm(to) Tj1 0 0 1 457.25 209.25 Tm(3.) Tj1 0 0 1 72 190.125 Tm(3.) Tj1 0 0 1 97 190.125 Tm(Compute) Tj1 0 0 1 136.375 190.125 Tm(the) Tj1 0 0 1 151.375 190.125 Tm(hash) Tj1 0 0 1 172.625 190.125 Tm(value) Tj1 0 0 1 197.25 190.125 Tm(of) Tj1 0 0 1 208.5 190.125 Tm(the) Tj1 0 0 1 223.625 190.125 Tm(pre\256x) Tj1 0 0 1 249.875 190.125 Tm(of) Tj1 0 0 1 261.125 190.125 Tm(the) Tj1 0 0 1 276.25 190.125 Tm(text) Tj1 0 0 1 294.125 190.125 Tm(\(starting) Tj/R88 10 Tf1 0 0 1 330.375 190.125 Tm(m) Tj/R85 10 Tf1 0 0 1 340.5 190.125 Tm(characters) Tj1 0 0 1 384.25 190.125 Tm(to) Tj1 0 0 1 394.875 190.125 Tm(the) Tj1 0 0 1 410 190.125 Tm(left) Tj1 0 0 1 426.25 190.125 Tm(of) Tj1 0 0 1 437.5 190.125 Tm(the) Tj1 0 0 1 452.625 190.125 Tm(current) Tj1 0 0 1 484 190.125 Tm(posi-) Tj1 0 0 1 97 175.125 Tm(tion\);) Tj1 0 0 1 121.125 175.125 Tm(call) Tj1 0 0 1 138.125 175.125 Tm(it) Tj1 0 0 1 146.125 175.125 Tm(text_pre\256x.) Tj1 0 0 1 72 156 Tm(4.) Tj1 0 0 1 97 156 Tm(Check) Tj1 0 0 1 126.375 156 Tm(for) Tj1 0 0 1 141.875 156 Tm(each) Tj/R88 10 Tf1 0 0 1 164.125 156 Tm(p) Tj/R85 10 Tf1 0 0 1 169.125 156 Tm(,) Tj/R88 10 Tf1 0 0 1 175.375 156 Tm(HASH) Tj/R85 10 Tf1 0 0 1 202.625 156 Tm([) Tj/R88 10 Tf1 0 0 1 206 156 Tm(h) Tj/R85 10 Tf1 0 0 1 212.625 156 Tm(]) TjETendstreamendobj112 0 obj2469endobj113 0 obj]>>stream3!s$g=:P6D-r&5[t3'Hj'#KG5Q&!e_71T`k]M5sbna-pY#@Yct@9TE5*9~>endstreamendobj142 0 obj109endobj143 0 obj>streamq5.5 0 0 -6.4 232.6 146.2 cm/R141 DoQBT1 0 0 1 239.875 139.75 Tm(M) Tj/R125 10 Tf1 0 0 1 248.25 139.75 Tm(.) Tj1 0 0 1 256.75 139.75 Tm(Let) Tj/R138 10 Tf1 0 0 1 273.625 139.75 Tm(c) Tj/R125 10 Tf1 0 0 1 281.625 139.75 Tm(be) Tj1 0 0 1 294.625 139.75 Tm(the) Tj1 0 0 1 310.375 139.75 Tm(size) Tj1 0 0 1 329.5 139.75 Tm(of) Tj1 0 0 1 341.375 139.75 Tm(the) Tj1 0 0 1 357.125 139.75 Tm(alphabet.) Tj1 0 0 1 399.625 139.75 Tm(We) Tj1 0 0 1 417.125 139.75 Tm(de\256ne) Tj1 0 0 1 445.125 139.75 Tm(the) Tj1 0 0 1 460.875 139.75 Tm(size) Tj1 0 0 1 480 139.75 Tm(of) Tj1 0 0 1 491.75 139.75 Tm(the) Tj1 0 0 1 72 124.75 Tm(block) Tj1 0 0 1 97 124.75 Tm(used) Tj1 0 0 1 118.125 124.75 Tm(to) Tj1 0 0 1 128.75 124.75 Tm(address) Tj1 0 0 1 161.75 124.75 Tm(the) Tj1 0 0 1 176.875 124.75 Tm(SHIFT) Tj1 0 0 1 207.5 124.75 Tm(table) Tj1 0 0 1 229.875 124.75 Tm(as) Tj/R138 10 Tf1 0 0 1 241.125 124.75 Tm(B) Tj/R128 10 Tf1 0 0 1 248 124.75 Tm(=) Tj/R125 10 Tf1 0 0 1 253.5 124.75 Tm(log) Tj/R138 7 Tf1 0 0 1 266.25 122.75 Tm(c) Tj/R125 10 Tf1 0 0 1 270.125 124.75 Tm(2) Tj/R138 10 Tf1 0 0 1 275.125 124.75 Tm(M) Tj/R125 10 Tf1 0 0 1 283.5 124.75 Tm(.) Tj1 0 0 1 291.375 124.75 Tm(The) Tj1 0 0 1 309.875 124.75 Tm(SHIFT) Tj1 0 0 1 340.5 124.75 Tm(table) Tj1 0 0 1 362.875 124.75 Tm(contains) Tj1 0 0 1 399.125 124.75 Tm(all) Tj1 0 0 1 412 124.75 Tm(possible) Tj1 0 0 1 447.625 124.75 Tm(strings) Tj1 0 0 1 477.125 124.75 Tm(of) Tj1 0 0 1 488.375 124.75 Tm(size) Tj/R138 10 Tf1 0 0 1 72 109.375 Tm(b) Tj/R125 10 Tf1 0 0 1 77 109.375 Tm(,) Tj1 0 0 1 83.25 109.375 Tm(so) Tj1 0 0 1 95.875 109.375 Tm(there) Tj1 0 0 1 119.75 109.375 Tm(are) Tj/R138 10 Tf1 0 0 1 135.875 109.375 Tm(c) Tj/R138 7 Tf1 0 0 1 141.5 113.375 Tm(b) Tj/R125 10 Tf1 0 0 1 149.5 109.375 Tm(=) Tj/R138 10 Tf1 0 0 1 158.875 109.375 Tm(c) TjETendstreamendobj144 0 obj1912endobj145 0 obj]>>stream56(Z_s8W-!s8W-!s8W-!s8W-!s8W-!s8Vm(#/>Zo!.Y~>endstreamendobj146 0 obj46endobj147 0 obj>streamq2.7 0 0 -7.2 163.7 120.6 cm/R145 DoQBT/R125 7 Tf1 0 0 1 166.25 114.75 Tm(log) Tj/R138 4 Tf1 0 0 1 175.25 113.375 Tm(c) Tj/R125 7 Tf1 0 0 1 177.5 114.75 Tm(2) Tj/R138 7 Tf1 0 0 1 181 114.75 Tm(M) TjETendstreamendobj148 0 obj218endobj149 0 obj]>>stream3kt^ps8W-!s8W-!s8W-!s8U3>BD_`p"9~>endstreamendobj150 0 obj35endobj151 0 obj>streamq1.9 0 0 -7.2 185.8 120.6 cm/R149 DoQendstreamendobj152 0 obj41endobj153 0 obj]>>stream3!s$g=:P6D-rendstreamendobj187 0 obj30endobj188 0 obj>streamq2.5 0 0 -2.5 483.9 513.9 cm/R186 DoQBT/R175 10 Tf1 0 0 1 488.25 506.625 Tm(=) Tj/R164 10 Tf1 0 0 1 495.375 506.625 Tm(B) Tj/R161 10 Tf1 0 0 1 501.5 506.625 Tm(.) Tj1 0 0 1 72 491.625 Tm(The) Tj1 0 0 1 91.125 491.625 Tm(probability) Tj1 0 0 1 138.5 491.625 Tm(that) Tj1 0 0 1 157 491.625 Tm(a) Tj1 0 0 1 165 491.625 Tm(given) Tj1 0 0 1 190.75 491.625 Tm(pattern) Tj1 0 0 1 222.125 491.625 Tm(has) Tj1 0 0 1 239 491.625 Tm(the) Tj1 0 0 1 254.75 491.625 Tm(same) Tj1 0 0 1 278.875 491.625 Tm(pre\256x) Tj1 0 0 1 305.75 491.625 Tm(and) Tj1 0 0 1 323.75 491.625 Tm(suf\256x) Tj1 0 0 1 350 491.625 Tm(as) Tj1 0 0 1 361.875 491.625 Tm(another) Tj1 0 0 1 395.5 491.625 Tm(pattern) Tj1 0 0 1 426.875 491.625 Tm(is) Tj1 0 0 1 437 491.625 Tm(streamBT/R190 14 Tf1 0 0 1 72 412.625 Tm(4.) Tj1 0 0 1 91.375 412.625 Tm(Experim) Tj1 0 0 1 146.5 412.625 Tm(ents) Tj/R161 10 Tf1 0 0 1 72 393.5 Tm(In) Tj1 0 0 1 83.125 393.5 Tm(this) Tj1 0 0 1 100.25 393.5 Tm(section) Tj1 0 0 1 131.375 393.5 Tm(we) Tj1 0 0 1 145.875 393.5 Tm(present) Tj1 0 0 1 177.625 393.5 Tm(several) Tj1 0 0 1 208.875 393.5 Tm(experiments) Tj1 0 0 1 260.625 393.5 Tm(comparing) Tj1 0 0 1 306.25 393.5 Tm(our) Tj1 0 0 1 322.375 393.5 Tm(algorithm) Tj1 0 0 1 364 393.5 Tm(to) Tj1 0 0 1 374.5 393.5 Tm(existing) Tj1 0 0 1 408.875 393.5 Tm(algorithms) Tj1 0 0 1 454.375 393.5 Tm(and) Tj1 0 0 1 471.625 393.5 Tm(evaluat-) Tj1 0 0 1 72 378.5 Tm(ing) Tj1 0 0 1 87.375 378.5 Tm(the) Tj1 0 0 1 102.25 378.5 Tm(effects) Tj1 0 0 1 131.75 378.5 Tm(of) Tj1 0 0 1 142.75 378.5 Tm(the) Tj1 0 0 1 157.625 378.5 Tm(number) Tj1 0 0 1 190.875 378.5 Tm(and) Tj1 0 0 1 208 378.5 Tm(size) Tj1 0 0 1 226.25 378.5 Tm(of) Tj1 0 0 1 237.25 378.5 Tm(patterns) Tj1 0 0 1 271.625 378.5 Tm(on) Tj1 0 0 1 284.25 378.5 Tm(the) Tj1 0 0 1 299.125 378.5 Tm(performance.) Tj1 0 0 1 357.5 378.5 Tm(Unless) Tj1 0 0 1 387.25 378.5 Tm(the) Tj1 0 0 1 402 378.5 Tm(patterns) Tj1 0 0 1 436.25 378.5 Tm(are) Tj1 0 0 1 451.125 378.5 Tm(very) Tj1 0 0 1 471.5 378.5 Tm(small) Tj1 0 0 1 495.625 378.5 Tm(or) Tj1 0 0 1 72 363.5 Tm(there) Tj1 0 0 1 94.875 363.5 Tm(are) Tj1 0 0 1 110 363.5 Tm(very) Tj1 0 0 1 130.625 363.5 Tm(few) Tj1 0 0 1 148.5 363.5 Tm(of) Tj1 0 0 1 159.625 363.5 Tm(them,) Tj1 0 0 1 184.875 363.5 Tm(our) Tj1 0 0 1 201 363.5 Tm(algorithm) Tj1 0 0 1 242.625 363.5 Tm(is) Tj1 0 0 1 252 363.5 Tm(signi\256cantly) Tj1 0 0 1 304.125 363.5 Tm(faster.) Tj1 0 0 1 334.25 363.5 Tm(All) Tj1 0 0 1 349.75 363.5 Tm(experiments) Tj1 0 0 1 401.625 363.5 Tm(were) Tj1 0 0 1 424.125 363.5 Tm(conducted) Tj1 0 0 1 468.25 363.5 Tm(on) Tj1 0 0 1 481.125 363.5 Tm(a) Tj1 0 0 1 488.5 363.5 Tm(Sun) Tj1 0 0 1 72 348.5 Tm(SparcStation) Tj1 0 0 1 126.375 348.5 Tm(10) Tj1 0 0 1 139.625 348.5 Tm(model) Tj1 0 0 1 167.875 348.5 Tm(510,) Tj1 0 0 1 188.625 348.5 Tm(running) Tj1 0 0 1 223 348.5 Tm(Solaris.) Tj1 0 0 1 259 348.5 Tm(All) Tj1 0 0 1 275 348.5 Tm(times) Tj1 0 0 1 299.875 348.5 Tm(are) Tj1 0 0 1 315.5 348.5 Tm(elapsed) Tj1 0 0 1 348.875 348.5 Tm(times) Tj1 0 0 1 373.75 348.5 Tm(\(on) Tj1 0 0 1 390.375 348.5 Tm(a) Tj1 0 0 1 398.125 348.5 Tm(lightly) Tj1 0 0 1 427.375 348.5 Tm(loaded) Tj1 0 0 1 457.375 348.5 Tm(system) Tj1 0 0 1 488.375 348.5 Tm(get-) Tj1 0 0 1 72 333.5 Tm(ting) Tj1 0 0 1 90.375 333.5 Tm(more) Tj1 0 0 1 113.875 333.5 Tm(than) Tj1 0 0 1 134 333.5 Tm(90%) Tj1 0 0 1 155.25 333.5 Tm(of) Tj1 0 0 1 166.5 333.5 Tm(the) Tj1 0 0 1 181.625 333.5 Tm(CPU\)) Tj1 0 0 1 207.25 333.5 Tm(given) Tj1 0 0 1 232.375 333.5 Tm(in) Tj1 0 0 1 243 333.5 Tm(seconds;) Tj1 0 0 1 280.375 333.5 Tm(each) Tj1 0 0 1 301.75 333.5 Tm(experiment) Tj1 0 0 1 349.75 333.5 Tm(was) Tj1 0 0 1 368.25 333.5 Tm(performed) Tj1 0 0 1 413 333.5 Tm(10) Tj1 0 0 1 425.875 333.5 Tm(times) Tj1 0 0 1 450.5 333.5 Tm(and) Tj1 0 0 1 468 333.5 Tm(the) Tj1 0 0 1 483.25 333.5 Tm(aver-) Tj1 0 0 1 72 318.5 Tm(ages) Tj1 0 0 1 92.75 318.5 Tm(are) Tj1 0 0 1 108 318.5 Tm(given) Tj1 0 0 1 133.125 318.5 Tm(\(the) Tj1 0 0 1 151.625 318.5 Tm(deviations) Tj1 0 0 1 195.625 318.5 Tm(were) Tj1 0 0 1 218.125 318.5 Tm(very) Tj1 0 0 1 238.875 318.5 Tm(small\).) Tj1 0 0 1 271.75 318.5 Tm(The) Tj1 0 0 1 290.25 318.5 Tm(text) Tj1 0 0 1 308.125 318.5 Tm(\256le) Tj1 0 0 1 323.75 318.5 Tm(we) Tj1 0 0 1 338.375 318.5 Tm(used) Tj1 0 0 1 359.625 318.5 Tm(for) Tj1 0 0 1 374.25 318.5 Tm(all) Tj1 0 0 1 387.125 318.5 Tm(experiments) Tj1 0 0 1 438.875 318.5 Tm(was) Tj1 0 0 1 457.25 318.5 Tm(a) Tj1 0 0 1 464.5 318.5 Tm(collection) Tj1 0 0 1 72 303.5 Tm(of) Tj1 0 0 1 83.625 303.5 Tm(articles) Tj1 0 0 1 115.875 303.5 Tm(from) Tj1 0 0 1 138.625 303.5 Tm(the) Tj1 0 0 1 154.25 303.5 Tm(Wall) Tj1 0 0 1 177.125 303.5 Tm(Street) Tj1 0 0 1 203.875 303.5 Tm(Journal) Tj1 0 0 1 236.75 303.5 Tm(totaling) Tj1 0 0 1 270.625 303.5 Tm(15.8MB.) Tj1 0 0 1 312 303.5 Tm(The) Tj1 0 0 1 331 303.5 Tm(patterns) Tj1 0 0 1 366.125 303.5 Tm(were) Tj1 0 0 1 389.125 303.5 Tm(words) Tj1 0 0 1 417 303.5 Tm(from) Tj1 0 0 1 439.875 303.5 Tm(the) Tj1 0 0 1 455.5 303.5 Tm(\256le) Tj1 0 0 1 471.625 303.5 Tm(\(all) Tj1 0 0 1 488.375 303.5 Tm(pat-) Tj1 0 0 1 72 288.5 Tm(terns) Tj1 0 0 1 94 288.5 Tm(appeared) Tj1 0 0 1 132.875 288.5 Tm(in) Tj1 0 0 1 143.125 288.5 Tm(the) Tj1 0 0 1 157.875 288.5 Tm(text\).) Tj1 0 0 1 97 269.375 Tm(Table) Tj1 0 0 1 122.375 269.375 Tm(1) Tj1 0 0 1 129.875 269.375 Tm(compares) Tj1 0 0 1 170.875 269.375 Tm(our) Tj1 0 0 1 186.75 269.375 Tm(algorithm,) Tj1 0 0 1 230.75 269.375 Tm(labeled) Tj/R164 10 Tf1 0 0 1 262.375 269.375 Tm(agrep) Tj/R161 10 Tf1 0 0 1 285.75 269.375 Tm(,) Tj1 0 0 1 290.875 269.375 Tm(against) Tj1 0 0 1 321.875 269.375 Tm(four) Tj1 0 0 1 341.25 269.375 Tm(other) Tj1 0 0 1 364.5 269.375 Tm(search) Tj1 0 0 1 392.875 269.375 Tm(routines:) Tj1 0 0 1 433 269.375 Tm(the) Tj1 0 0 1 447.875 269.375 Tm(original) Tj1 0 0 1 481.625 269.375 Tm(egrep) Tj1 0 0 1 72 254.375 Tm(and) Tj1 0 0 1 89.875 254.375 Tm(fgrep,) Tj1 0 0 1 117 254.375 Tm(GNU-grep) Tj1 0 0 1 163.375 254.375 Tm(version) Tj1 0 0 1 196.25 254.375 Tm(2.0) Tj1 0 0 1 212.125 254.375 Tm([Ha93],) Tj1 0 0 1 246.5 254.375 Tm(and) Tj/R164 10 Tf1 0 0 1 264.375 254.375 Tm(gre) Tj/R161 10 Tf1 0 0 1 277.75 254.375 Tm(,) Tj1 0 0 1 283.5 254.375 Tm(an) Tj1 0 0 1 296.25 254.375 Tm(older) Tj1 0 0 1 320.125 254.375 Tm(program) Tj1 0 0 1 357.375 254.375 Tm(written) Tj1 0 0 1 389 254.375 Tm(by) Tj1 0 0 1 402.25 254.375 Tm(Andrew) Tj1 0 0 1 437.875 254.375 Tm(Hume) Tj1 0 0 1 465.625 254.375 Tm(\(which) Tj1 0 0 1 496.75 254.375 Tm(at) Tj1 0 0 1 72 239.375 Tm(the) Tj1 0 0 1 87.625 239.375 Tm(time) Tj1 0 0 1 108.75 239.375 Tm(was) Tj1 0 0 1 127.875 239.375 Tm(the) Tj1 0 0 1 143.625 239.375 Tm(only) Tj1 0 0 1 164.875 239.375 Tm(program) Tj1 0 0 1 202.375 239.375 Tm(that) Tj1 0 0 1 220.875 239.375 Tm(could) Tj1 0 0 1 246.625 239.375 Tm(handle) Tj1 0 0 1 276.875 239.375 Tm(large) Tj1 0 0 1 300.5 239.375 Tm(number) Tj1 0 0 1 334.625 239.375 Tm(of) Tj1 0 0 1 346.5 239.375 Tm(patterns\).) Tj1 0 0 1 390.125 239.375 Tm(The) Tj1 0 0 1 409.25 239.375 Tm(patterns) Tj1 0 0 1 444.5 239.375 Tm(were) Tj1 0 0 1 467.625 239.375 Tm(words) Tj1 0 0 1 495.625 239.375 Tm(of) Tj1 0 0 1 72 224.375 Tm(sizes) Tj1 0 0 1 94.375 224.375 Tm(ranging) Tj1 0 0 1 127.875 224.375 Tm(from) Tj1 0 0 1 150.25 224.375 Tm(5) Tj1 0 0 1 158.125 224.375 Tm(to) Tj1 0 0 1 168.75 224.375 Tm(15) Tj1 0 0 1 181.625 224.375 Tm(with) Tj1 0 0 1 202.25 224.375 Tm(average) Tj1 0 0 1 236.5 224.375 Tm(size) Tj1 0 0 1 254.875 224.375 Tm(slightly) Tj1 0 0 1 287.5 224.375 Tm(above) Tj1 0 0 1 314.25 224.375 Tm(6.) Tj1 0 0 1 327 224.375 Tm(The) Tj1 0 0 1 345.375 224.375 Tm(original) Tj1 0 0 1 379.25 224.375 Tm(egrep) Tj1 0 0 1 404.375 224.375 Tm(and) Tj1 0 0 1 421.625 224.375 Tm(fgrep) Tj1 0 0 1 445.625 224.375 Tm(could) Tj1 0 0 1 470.625 224.375 Tm(not) Tj1 0 0 1 486.125 224.375 Tm(han-) Tj1 0 0 1 72 209.375 Tm(dle) Tj1 0 0 1 86.75 209.375 Tm(\(or) Tj1 0 0 1 101 209.375 Tm(took) Tj1 0 0 1 121.25 209.375 Tm(too) Tj1 0 0 1 136.5 209.375 Tm(long) Tj1 0 0 1 156.75 209.375 Tm(for\)) Tj1 0 0 1 174.375 209.375 Tm(more) Tj1 0 0 1 197.5 209.375 Tm(than) Tj1 0 0 1 217.25 209.375 Tm(few) Tj1 0 0 1 234.875 209.375 Tm(hundreds) Tj1 0 0 1 274.125 209.375 Tm(patterns.) Tj1 0 0 1 97 190.25 Tm(In) Tj1 0 0 1 108.5 190.25 Tm(the) Tj1 0 0 1 123.875 190.25 Tm(second) Tj1 0 0 1 154.875 190.25 Tm(experiment,) Tj1 0 0 1 205.625 190.25 Tm(we) Tj1 0 0 1 220.5 190.25 Tm(measured) Tj1 0 0 1 262.125 190.25 Tm(the) Tj1 0 0 1 277.5 190.25 Tm(running) Tj1 0 0 1 311.75 190.25 Tm(times) Tj1 0 0 1 336.625 190.25 Tm(of) Tj1 0 0 1 348.25 190.25 Tm(agrep) Tj1 0 0 1 373.875 190.25 Tm(for) Tj1 0 0 1 388.875 190.25 Tm(different) Tj1 0 0 1 426.75 190.25 Tm(number) Tj1 0 0 1 460.625 190.25 Tm(of) Tj1 0 0 1 472.25 190.25 Tm(patterns) Tj1 0 0 1 72 175.25 Tm(ranging) Tj1 0 0 1 105.875 175.25 Tm(from) Tj1 0 0 1 128.625 175.25 Tm(1000) Tj1 0 0 1 151.875 175.25 Tm(to) Tj1 0 0 1 162.875 175.25 Tm(10,000.) Tj1 0 0 1 198.625 175.25 Tm(The) Tj1 0 0 1 217.5 175.25 Tm(running) Tj1 0 0 1 251.875 175.25 Tm(time) Tj1 0 0 1 272.875 175.25 Tm(is) Tj1 0 0 1 282.75 175.25 Tm(indeed) Tj1 0 0 1 312.75 175.25 Tm(improved) Tj1 0 0 1 354.375 175.25 Tm(once) Tj1 0 0 1 376.625 175.25 Tm(the) Tj1 0 0 1 392 175.25 Tm(number) Tj1 0 0 1 425.75 175.25 Tm(of) Tj1 0 0 1 437.25 175.25 Tm(patterns) Tj1 0 0 1 472.125 175.25 Tm(exceeds) Tj1 0 0 1 72 160.25 Tm(about) Tj1 0 0 1 97 160.25 Tm(8,000.) Tj1 0 0 1 127.25 160.25 Tm(The) Tj1 0 0 1 145.625 160.25 Tm(reason) Tj1 0 0 1 174.625 160.25 Tm(for) Tj1 0 0 1 189.125 160.25 Tm(that) Tj1 0 0 1 207 160.25 Tm(is) Tj1 0 0 1 216.5 160.25 Tm(very) Tj1 0 0 1 237.25 160.25 Tm(simple;) Tj1 0 0 1 269.5 160.25 Tm(it) Tj1 0 0 1 277.875 160.25 Tm(is) Tj1 0 0 1 287.375 160.25 Tm(related) Tj1 0 0 1 317.625 160.25 Tm(more) Tj1 0 0 1 341.125 160.25 Tm(to) Tj1 0 0 1 351.75 160.25 Tm(the) Tj1 0 0 1 366.875 160.25 Tm(way) Tj1 0 0 1 386.5 160.25 Tm(greps) Tj1 0 0 1 411.125 160.25 Tm(work) Tj1 0 0 1 434.625 160.25 Tm(rather) Tj1 0 0 1 461 160.25 Tm(than) Tj1 0 0 1 481.125 160.25 Tm(to) Tj1 0 0 1 491.75 160.25 Tm(the) Tj1 0 0 1 72 145.25 Tm(speci\256c) Tj1 0 0 1 106.125 145.25 Tm(algorithm.) Tj1 0 0 1 153.5 145.25 Tm(Agrep) Tj1 0 0 1 182.125 145.25 Tm(\(and) Tj1 0 0 1 203.375 145.25 Tm(every) Tj1 0 0 1 229.125 145.25 Tm(other) Tj1 0 0 1 253.125 145.25 Tm(grep\)) Tj1 0 0 1 277.75 145.25 Tm(outputs) Tj1 0 0 1 310.5 145.25 Tm(the) Tj1 0 0 1 326.125 145.25 Tm(lines) Tj1 0 0 1 348.375 145.25 Tm(that) Tj1 0 0 1 366.75 145.25 Tm(match) Tj1 0 0 1 394.625 145.25 Tm(the) Tj1 0 0 1 410.25 145.25 Tm(query.) Tj1 0 0 1 441.5 145.25 Tm(Once) Tj1 0 0 1 466.125 145.25 Tm(it) Tj1 0 0 1 475 145.25 Tm(is) Tj1 0 0 1 485 145.25 Tm(esta-) Tj1 0 0 1 72 130.25 Tm(blished) Tj1 0 0 1 103.375 130.25 Tm(that) Tj1 0 0 1 120.875 130.25 Tm(a) Tj1 0 0 1 127.875 130.25 Tm(line) Tj1 0 0 1 145.375 130.25 Tm(should) Tj1 0 0 1 174.5 130.25 Tm(be) Tj1 0 0 1 186.5 130.25 Tm(output,) Tj1 0 0 1 217 130.25 Tm(there) Tj1 0 0 1 239.625 130.25 Tm(is) Tj1 0 0 1 248.75 130.25 Tm(no) Tj1 0 0 1 261.25 130.25 Tm(need) Tj1 0 0 1 282.75 130.25 Tm(to) Tj1 0 0 1 293 130.25 Tm(search) Tj1 0 0 1 321.25 130.25 Tm(further) Tj1 0 0 1 351.125 130.25 Tm(in) Tj1 0 0 1 361.375 130.25 Tm(that) Tj1 0 0 1 378.875 130.25 Tm(line.) Tj1 0 0 1 401.5 130.25 Tm(Above) Tj1 0 0 1 430.875 130.25 Tm(8,000,) Tj1 0 0 1 458.5 130.25 Tm(the) Tj1 0 0 1 473.375 130.25 Tm(number) Tj1 0 0 1 72 115.25 Tm(of) Tj1 0 0 1 84.25 115.25 Tm(patterns) Tj1 0 0 1 119.875 115.25 Tm(becomes) Tj1 0 0 1 158.875 115.25 Tm(so) Tj1 0 0 1 171.625 115.25 Tm(large,) Tj1 0 0 1 198 115.25 Tm(most) Tj1 0 0 1 221.125 115.25 Tm(lines) Tj1 0 0 1 243.75 115.25 Tm(are) Tj1 0 0 1 259.875 115.25 Tm(matched) Tj1 0 0 1 297.625 115.25 Tm(and) Tj1 0 0 1 315.875 115.25 Tm(matched) Tj1 0 0 1 353.625 115.25 Tm(early) Tj1 0 0 1 377.5 115.25 Tm(on.) Tj1 0 0 1 396.25 115.25 Tm(So) Tj1 0 0 1 410.5 115.25 Tm(less) Tj1 0 0 1 429.25 115.25 Tm(work) Tj1 0 0 1 453.625 115.25 Tm(is) Tj1 0 0 1 464 115.25 Tm(needed) Tj1 0 0 1 496.25 115.25 Tm(to) Tj1 0 0 1 72 100.25 Tm(match) Tj1 0 0 1 99.375 100.25 Tm(the) Tj1 0 0 1 114.5 100.25 Tm(rest) Tj1 0 0 1 131.875 100.25 Tm(of) Tj1 0 0 1 143.125 100.25 Tm(the) Tj1 0 0 1 158.25 100.25 Tm(lines.) Tj1 0 0 1 185 100.25 Tm(We) Tj1 0 0 1 202 100.25 Tm(present) Tj1 0 0 1 234 100.25 Tm(this) Tj1 0 0 1 251.375 100.25 Tm(as) Tj1 0 0 1 262.75 100.25 Tm(an) Tj1 0 0 1 275.25 100.25 Tm(example) Tj1 0 0 1 312.25 100.25 Tm(of) Tj1 0 0 1 323.625 100.25 Tm(misleading) Tj1 0 0 1 370.5 100.25 Tm(performance) Tj1 0 0 1 424.375 100.25 Tm(measures;) Tj1 0 0 1 467.5 100.25 Tm(we) Tj1 0 0 1 482.25 100.25 Tm(prob-) Tj1 0 0 1 72 85.25 Tm(ably) Tj1 0 0 1 91.75 85.25 Tm(would) Tj1 0 0 1 119.25 85.25 Tm(not) Tj1 0 0 1 134.5 85.25 Tm(have) Tj1 0 0 1 156 85.25 Tm(thought) Tj1 0 0 1 189 85.25 Tm(about) Tj1 0 0 1 213.75 85.25 Tm(this) Tj1 0 0 1 230.625 85.25 Tm(effect) Tj1 0 0 1 256.125 85.25 Tm(if) Tj1 0 0 1 264.75 85.25 Tm(the) Tj1 0 0 1 279.5 85.25 Tm(numbers) Tj1 0 0 1 316.5 85.25 Tm(had) Tj1 0 0 1 333.5 85.25 Tm(not) Tj1 0 0 1 348.75 85.25 Tm(actually) Tj1 0 0 1 383 85.25 Tm(gone) Tj1 0 0 1 405 85.25 Tm(down.) TjETQendstreamendobj192 0 obj12947endobj193 0 obj>>/Contents [159 0 R162 0 R165 0 R169 0 R173 0 R176 0 R180 0 R184 0 R188 0 R191 0 R]>>endobj194 0 obj>endobj195 0 obj>streamqBT/R194 10 Tf1 0 0 1 285.5 705 Tm(8) TjETendstreamendobj196 0 obj48endobj197 0 obj]>>stream4:6Sr!WX>~>endstreamendobj198 0 obj12endobj199 0 obj>streamq5.7 0 0 -0.5 143.3 672.7 cm/R197 DoQq5.7 0 0 -0.5 146.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 151.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 156.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 161.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 166.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 171.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 176.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 181.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 186.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 191.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 196.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 201.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 206.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 211.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 216.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 221.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 226.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 231.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 236.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 241.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 246.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 251.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 256.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 261.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 266.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 271.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 276.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 281.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 286.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 291.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 296.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 301.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 306.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 311.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 316.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 321.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 326.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 331.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 336.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 341.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 346.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 351.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 356.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 361.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 366.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 371.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 376.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 381.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 386.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 391.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 396.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 401.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 406.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 411.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 416.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 421.4 672.7 cm/R197 DoQq5.7 0 0 -0.5 426.4 672.7 cm/R197 DoQendstreamendobj200 0 obj2378endobj201 0 obj>endobj202 0 obj>streamBT/R201 10 Tf1 0 0 1 168.875 659.875 Tm(#) Tj1 0 0 1 176.375 659.875 Tm(of) Tj1 0 0 1 187.25 659.875 Tm(patterns) Tj1 0 0 1 234 659.875 Tm(egrep) Tj1 0 0 1 272.125 659.875 Tm(fgrep) Tj1 0 0 1 309 659.875 Tm(GNU-grep) Tj1 0 0 1 371.75 659.875 Tm(gre) Tj1 0 0 1 404.5 659.875 Tm(agrep) TjETendstreamendobj203 0 obj307endobj204 0 obj]>>stream4:6Sr!WX>~>endstreamendobj205 0 obj12endobj206 0 obj>streamq5.7 0 0 -0.5 163.3 652.7 cm/R204 DoQq5.7 0 0 -0.5 166.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 171.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 176.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 181.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 186.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 191.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 196.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 201.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 206.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 211.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 216.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 221.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 226.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 231.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 236.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 241.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 246.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 251.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 256.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 261.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 266.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 271.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 276.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 281.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 286.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 291.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 296.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 301.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 306.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 311.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 316.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 321.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 326.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 331.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 336.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 341.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 346.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 351.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 356.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 361.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 366.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 371.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 376.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 381.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 386.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 391.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 396.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 401.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 406.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 411.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 416.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 421.4 652.7 cm/R204 DoQq5.7 0 0 -0.5 426.4 652.7 cm/R204 DoQBT1 0 0 1 168.875 639.875 Tm(10) Tj1 0 0 1 236.5 639.875 Tm(6.54) Tj1 0 0 1 271.5 639.875 Tm | |