nico.ash + toread   50

Damn Cool Algorithms: Levenshtein Automata - Nick's Blog
The basic insight behind Levenshtein automata is that it's possible to construct a Finite state automaton that recognizes exactly the set of strings within a given Levenshtein distance of a target word. We can then feed in any word, and the automaton will accept or reject it based on whether the Levenshtein distance to the target word is at most the distance specified when we constructed the automaton. Further, due to the nature of FSAs, it will do so in O(n) time with the length of the string being tested. Compare this to the standard Dynamic Programming Levenshtein algorithm, which takes O(mn) time, where m and n are the lengths of the two input words! It's thus immediately apparrent that Levenshtein automaton provide, at a minimum, a faster way for us to check many words against a single target word and maximum distance - not a bad improvement to start with!
algorithms  algorithm  search  python  levenshtein  distance  toread  programming  article  fuzzy  automata 
july 2010 by nico.ash

related tags

advertising  advice  algorithm  algorithms  amqp  app  apple  apps  arm  art  article  articles  assembly  automata  awesome  banking  banks  best-practice  best-practices  bestpractice  bestpractices  bigfiles  binary  biology  bit  bithacks  bitmanipulation  bits  bitwise  blog  book  book-or-author-to-read  bookorauthortoread  books  brazil  buddhism  business  c  c++  canvas  career  change  checklist  china  classloader  classloading  cli  climate  clojure  clone  cocoa  code  color  colors  colour  community  compojure  compression  computer  computerscience  concentration  cool  cpu  culture  data  database  debate  decisionmaking  deflate  democracy  deployment  design  dev  developer  development  diamond  diamonds  distance  django  documentation  download  dvcs  dynamic  ebook  economics  economy  education  elisp  emacs  embedded  entrepreneurship  environment  example  exercise  facebook  fantasy  fiction  file  finance  fitness  fractal  fractals  freedom  functional  funny  fuzzy  gis  git  github  global  globalization  google  gpu  graphics  gzip  habits  hack  hackernews  hacking  hacks  hardware  health  history  howto  html  html5  http  huffman  ide  ido  innovation  inspiration  interactive  interesting  internet  interruptions  interview  investment  ios  ipad  iphone  iphonedev  java  javascript  javaworld  job  jobs  js  jvm  kernel  keynes  language  launch  lcd  leadership  learning  levenshtein  life  lifehack  lifehacks  lifestyle  linux  lisp  list  living  low  management  map  marketing  math  mathematics  maths  medical  medicine  meditation  memory  messaging  mexico  microcontrollers  middleclass  mindfulness  money  monitors  motivation  nature  neon  networking  news  node  node.js  nodejs  nvidia  obesity  offline  opengl  opensource  optimization  pain  parallel  penumbra  performance  perl  philosophy  plugin  politics  privacy  productivity  programming  proxy  psychology  python  rabbitmq  reading  reddit  reference  reflection  rsi  rss  running  science  scifi  scm  sealevel  search  security  seo  server  sf  Shell  sleep  social  sociology  software  softwareengineering  sourcecontrol  spirituality  sport  ssh  stackoverflow  startup  startups  strategy  sunkcosts  surveillance  swank  syntax  sysadmin  theatlantic  theory  tips  tools  toread  training  tree  tricks  trivia  tunnel  tutorial  typography  ubuntu  unemployment  unix  usa  versioncontrol  wallstreet  warming  web  web2.0  webapp  webdesign  webdev  webdevelopment  website  websockets  weight  windows  work  writing  ycombinator  zen 

Copy this bookmark:



description:


tags: