fenwick trees
play

Fenwick Trees Dr. Mattox Beckman University of Illinois at - PowerPoint PPT Presentation

Introduction Navigation Fenwick Trees Dr. Mattox Beckman University of Illinois at Urbana-Champaign Department of Computer Science Introduction Navigation Objectives Your Objectives: Describe and implement a Fenwick Tree Compare a


  1. Introduction Navigation Fenwick Trees Dr. Mattox Beckman University of Illinois at Urbana-Champaign Department of Computer Science

  2. Introduction Navigation Objectives Your Objectives: ◮ Describe and implement a Fenwick Tree ◮ Compare a Fenwick Tree to a Segment Tree

  3. Introduction Navigation Motivating Example Exam scores = { 2 , 4 , 5 , 5 , 6 , 6 , 6 , 7 , 7 , 8 , 9 }

  4. Introduction Navigation Motivating Example Exam scores = { 2 , 4 , 5 , 5 , 6 , 6 , 6 , 7 , 7 , 8 , 9 } index 1 2 3 4 5 6 7 8 9 10 value 0 1 0 1 2 3 2 1 1 0

  5. Introduction Navigation Motivating Example Exam scores = { 2 , 4 , 5 , 5 , 6 , 6 , 6 , 7 , 7 , 8 , 9 } index 1 2 3 4 5 6 7 8 9 10 value 0 1 0 1 2 3 2 1 1 0 cumulative 0 1 1 2 4 7 9 10 11 11

  6. Introduction Navigation Motivating Example Exam scores = { 2 , 3 , 4 , 5 , 5 , 6 , 6 , 6 , 7 , 7 , 8 , 9 } index 1 2 3 4 5 6 7 8 9 10 value 0 1 1 1 2 3 2 1 1 0 cumulative 0 1 2 3 5 8 10 11 12 12

  7. Introduction Navigation Fenwick Tree value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10

  8. Introduction Navigation Fenwick Tree value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010

  9. Introduction Navigation Fenwick Tree ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010

  10. Introduction Navigation Fenwick Tree ft 2 1 5 1 ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010

  11. Introduction Navigation Fenwick Tree ft 3 2 ft 2 1 5 1 ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010

  12. Introduction Navigation Fenwick Tree ft 4 10 ft 3 2 ft 2 1 5 1 ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010

  13. E.g.: 5 = 101 4 = 100 0 ft ft Update 5: Visit 5=101 6=110 8=1000 E.g.: 10 = 1010 8 = 1000 0 ft ft LSOne(n) = n & -n Introduction Navigation Queries ft 4 10 ft 3 2 ft 2 1 5 1 ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 ◮ To Query sum for position n , fjrst read n . ◮ Then, subtract the lowest order bit, and repeat until n = 0 .

  14. Update 5: Visit 5=101 6=110 8=1000 E.g.: 10 = 1010 8 = 1000 0 ft ft LSOne(n) = n & -n Introduction Navigation Queries ft 4 10 ft 3 2 ft 2 1 5 1 ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 ◮ To Query sum for position n , fjrst read n . ◮ Then, subtract the lowest order bit, and repeat until n = 0 . ◮ E.g.: 5 = 101 → 4 = 100 → 0 ◮ ft (5) + ft (4) = 2 + 2 = 4

  15. Update 5: Visit 5=101 6=110 8=1000 E.g.: 10 = 1010 8 = 1000 0 ft ft LSOne(n) = n & -n Introduction Navigation Queries ft 4 10 ft 3 2 ft 2 1 5 1 ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 ◮ To Query sum for position n , fjrst read n . ◮ Then, subtract the lowest order bit, and repeat until n = 0 . ◮ E.g.: 5 = 101 → 4 = 100 → 0 ◮ ft (5) + ft (4) = 2 + 2 = 4

  16. Update 5: Visit 5=101 6=110 8=1000 LSOne(n) = n & -n Introduction Navigation Queries ft 4 10 ft 3 2 ft 2 1 5 1 ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 ◮ To Query sum for position n , fjrst read n . ◮ Then, subtract the lowest order bit, and repeat until n = 0 . ◮ E.g.: 5 = 101 → 4 = 100 → 0 ◮ ft (5) + ft (4) = 2 + 2 = 4 ◮ E.g.: 10 = 1010 → 8 = 1000 → 0 ◮ ft (10) + ft (8) = 1 + 10 = 11

  17. Update 5: Visit 5=101 6=110 8=1000 LSOne(n) = n & -n Introduction Navigation Queries ft 4 10 ft 3 2 ft 2 1 5 1 ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 ◮ To Query sum for position n , fjrst read n . ◮ Then, subtract the lowest order bit, and repeat until n = 0 . ◮ E.g.: 5 = 101 → 4 = 100 → 0 ◮ ft (5) + ft (4) = 2 + 2 = 4 ◮ E.g.: 10 = 1010 → 8 = 1000 → 0 ◮ ft (10) + ft (8) = 1 + 10 = 11

  18. LSOne(n) = n & -n Introduction Navigation Queries ft 4 10 ft 3 2 ft 2 1 5 1 ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 ◮ To Query sum for position n , fjrst read n . ◮ Then, subtract the lowest order bit, and repeat until n = 0 . ◮ E.g.: 5 = 101 → 4 = 100 → 0 ◮ ft (5) + ft (4) = 2 + 2 = 4 ◮ Update 5: Visit 5=101 → 6=110 → 8=1000 ◮ E.g.: 10 = 1010 → 8 = 1000 → 0 ◮ ft (10) + ft (8) = 1 + 10 = 11

  19. Introduction Navigation Queries ft 4 10 ft 3 2 ft 2 1 5 1 ft 1 0 0 2 2 1 value 0 1 0 1 2 3 2 1 1 0 index 1 2 3 4 5 6 7 8 9 10 index 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 ◮ To Query sum for position n , fjrst read n . ◮ Then, subtract the lowest order bit, and repeat until n = 0 . ◮ E.g.: 5 = 101 → 4 = 100 → 0 ◮ ft (5) + ft (4) = 2 + 2 = 4 ◮ Update 5: Visit 5=101 → 6=110 → 8=1000 ◮ E.g.: 10 = 1010 → 8 = 1000 → 0 ◮ LSOne(n) = n & -n ◮ ft (10) + ft (8) = 1 + 10 = 11

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend