fbpx
วิกิพีเดีย

แถวลำดับแอลซีพี

longest common prefix array (LCP array) ถูกนำมาใช้ในปี 1993. โดย Udi Manber และ Gene Myers เพื่อปรับปรุง suffix array การทำงานของวิธีการค้นหาสตริงของพวกเขา โดยวิธีการคือ สมมุติให้มี อาร์เรย์ A: = [aab, ab, abaab, b, baab] เป็น suffix array อักษรที่ยาวที่สุดระหว่าง A [1] = aab และ A [2] = ab เป็นที่มีความยาว 1 ดังนั้น H [2] = 1 ทำนองเดียวกันใน LCP array ของ A [2] = ab และ A [3] = abaab เป็น ab ดังนั้น H [3] = 2

ตัวอย่าง LCP array

สมมุติให้มีว่าข้อความ S = banana ให้เราเรียงตามลำดับindex

i 0 1 2 3 4 5
S[i] b a n a n a

นำข้อความมาทำเป็นอักษรย่อยแล้วเรียงตามindex

suffix i
banana 0
anana 1
nana 2
ana 3
na 4
a 5

เรียงตามลำดับ suffix array ของอักษรย่อย S

suffix i
a 5
ana 3
anana 1
banana 0
na 4
nana 2

จากนั้นให้เราหาจำนวนอักษรที่ยาวที่สุดของ suffix arrayตามลำดับจะได้ LCP array

i suffix LCP array
5 a 0
3 ana 1
1 anana 3
0 banana 0
4 na 0
2 nana 2

เราจะได้ LCP array ของ S = [0, 1, 3, 0, 0, 2]

การนำ LCP array ไปใช้งานในภาษาPython

ตัวอย่างภาษาไพทอน

def suffix_array(s):  return [rank for suffix, rank in sorted((s[i:], i) for i in range(len(s)))]  def lcp_array(s):   sa = suffix_array(s)  n = len(s)  k = 0  lcp = [0] * n  rank = [0] * n  for i in range(n):  rank[sa[i]] = i   for i in range(n):  if rank[i] == n-1:  k = 0  continue  j = sa[rank[i] + 1]  while i + k < n and j + k < n and s[i + k] == s[j + k]:  k += 1  lcp[rank[i]+1] = k;  if k:  k -= 1    return lcp 

อ้างอิง

LCP array from Suffix Array on geeksforgeeks

แถวลำด, บแอลซ, longest, common, prefix, array, array, กนำมาใช, ในป, 1993, โดย, manber, และ, gene, myers, เพ, อปร, บปร, suffix, array, การทำงานของว, การค, นหาสตร, งของพวกเขา, โดยว, การค, สมม, ให, อาร, เรย, abaab, baab, เป, suffix, array, กษรท, ยาวท, ดระหว, าง, . longest common prefix array LCP array thuknamaichinpi 1993 ody Udi Manber aela Gene Myers ephuxprbprung suffix array karthangankhxngwithikarkhnhastringkhxngphwkekha odywithikarkhux smmutiihmi xarery A aab ab abaab b baab epn suffix array xksrthiyawthisudrahwang A 1 aab aela A 2 ab epnthimikhwamyaw 1 dngnn H 2 1 thanxngediywknin LCP array khxng A 2 ab aela A 3 abaab epn ab dngnn H 3 2twxyang LCP array aekikhsmmutiihmiwakhxkhwam S banana iheraeriyngtamladbindex i 0 1 2 3 4 5S i b a n a n anakhxkhwammathaepnxksryxyaelweriyngtamindex suffix ibanana 0anana 1nana 2ana 3na 4a 5eriyngtamladb suffix array khxngxksryxy S suffix ia 5ana 3anana 1banana 0na 4nana 2caknniherahacanwnxksrthiyawthisudkhxng suffix arraytamladbcaid LCP array i suffix LCP array5 a 03 ana 11 anana 30 banana 04 na 02 nana 2eracaid LCP array khxng S 0 1 3 0 0 2 karna LCP array ipichnganinphasaPython aekikhtwxyangphasaiphthxndef suffix array s return rank for suffix rank in sorted s i i for i in range len s def lcp array s sa suffix array s n len s k 0 lcp 0 n rank 0 n for i in range n rank sa i i for i in range n if rank i n 1 k 0 continue j sa rank i 1 while i k lt n and j k lt n and s i k s j k k 1 lcp rank i 1 k if k k 1 return lcpxangxing aekikhLCP array from Suffix Array on geeksforgeeksekhathungcak https th wikipedia org w index php title aethwladbaexlsiphi amp oldid 7593051, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม