fbpx
วิกิพีเดีย

รายการจัดตัวเอง

รายการจัดตัวเอง (อังกฤษ: self-organizing list) เป็นรายการที่มีการจัดการลำดับความสำคัญขององค์ประกอบภายในรายการด้วยตัวเอง โดยที่อิงจากการวิเคราะห์พฤติกรรมในการจัดตัวเองเพื่อปรับปรุงเวลาในการเข้าถึงข้อมูลโดยเฉลี่ย

ซี่งมีจุดมุ่งหมาย ของรายการจัดตัวเอง คือ ปรับปรุงประสิทธิภาพของการค้นหาเชิงเส้นด้วยการย้ายรายการที่เข้าถึงบ่อยไปอยู่ที่บริเวณหัวของรายการ

การวิเคราะห์เวลาทำงานสำหรับการเข้าถึง

Best case

กรณีที่ข้อมูลหรือโหนดที่ต้องการเข้าถึงนั้นเป็นส่วนหัวของข้อมูล ซึ้งจะทำให้มีความซับซ้อนเป็น  

Worst case

กรณีที่ข้อมูลหรือโหนดที่ต้องการเข้าถึงนั้นเป็นส่วนท้ายของข้อมูล หรือไม่มีอยู่ในรายการ ซึ้งจะทำให้มีความซับซ้อนที่มีการทำงานแบบเชิงเส้นเป็น  

ตัวอย่างขั้นตอนวิธี (Algorithm)

  1. Move to front Method (MTF)
  2. Count Method (Frequency counter)
  3. Transpose Method

Move to front Method (MTF)

หลักการทำงาน

  ไม่ว่าจะทำการเข้าถึงข้อมูลที่ตำแหน่งใดใด ก็จะทำการย้ายข้อมูลนั้นไปไว้ต้นรายการเสมอ

 
ขั้นตอนวิธีจัดโหนดภายในรายการแบบ MTF

ข้อดี

  สามารถปรับรูปแบบการเข้าถึงข้อมูลได้อย่างรวดเร็ว

ข้อเสีย

  จะจัดลำดับความสำคัญของข้อมูลนั้นได้ยาก

ตัวอย่างโค้ดในภาษา Python

def move2front(array,selectNode):  n = len(array)  for i in range(0,n):  if (selectNode == array[i]):  item = array.pop(i)  array.insert(0, item)  return array  return array 

วิเคราะห์ความซับซ้อนของโค้ด

จากโค้ดในบรรทัดที่ 3 และ6 มีความซับซ้อนเป็น   จึงทำให้ best case และ worst case โค้ดมีความซับซ้อน   เหมือนกัน

Count Method (frequency counter)

หลักการทำงาน

  ข้อมูลแต่ละตำแหน่งจะมีการเก็บค่าจำนวนครั่งในการเข้าถึงข้อมูลนั้นจากนั้นจะมีการเรียงลำดับข้อมูลใหม่ตามความถี่ที่เข้าถึงข้อมูล ซึ่งวิธีการนี้ต้องใช้พื้นที่เพิ่มเติมในการจัดเก็บข้อมูล

 
ขั้นตอนวิธีจัดโหนดภายในรายการแบบ Count Method (frequency counter)

ข้อดี

  ท้อนให้เห็นถึงรูปแบบการเข้าถึงข้อมูลที่แท้จริงให้สมจริงมากขึ้น

ข้อเสีย

  ต้องมีพื้นที่เพิ่มในการเก็บจำนวนที่นับ และปรับตัวให้เข้ากับการเปลี่ยนแปลงอย่างรวดเร็วได้ค่อนข้างยาก

ตัวอย่างโค้ดในภาษา Python

def freqCount(array,user,memory):  n = len(array)  for i in range(0,n):  if (array[i] == user ):  itemL = array.pop(i)  itemC = memory.pop(i)  itemC += 1  for p in range(0,n):   if (memory[p] <= itemC):   array.insert(p, itemL)   memory.insert(p, itemC)   return [array, memory]  return [array, memory] 

วิเคราะห์ความซับซ้อนของโค้ด

จากโค้ดในบรรทัดที่ 3 และ8 มีความซับซ้อนเป็น   จึงทำให้ best case โค้ดมีความซับซ้อน   และ worst case โค้ดมีความซับซ้อน  เพราะมี 2-nested loop

Transpose Method

หลักการทำงาน

  ไม่ว่าจะทำการเข้าถึงข้อมูลที่ตำแหน่งใดใด ก็จะทำการย้ายข้อมูลนั้นปางหน้าเสมอ

 
ขั้นตอนวิธีจัดโหนดภายในรายการแบบ Transpose Method

ข้อดี

  ใช้งานง่ายและใช้หน่วยความจำน้อย

ข้อเสีย

  ต้องเข้าถึงหลายข้อมูลเพื่อที่จะย้ายเพียงครั้งเดียว และใช้เวลามากเมื่อข้อมูลที่ต้องการมีตำแหน่งอยู่ไกล

ตัวอย่างโค้ดในภาษา Python

def transpose(array,user):  n = len(array)  for index in range(0, n):  if (index == 0 and user == array[index]):  return array  elif (user == array[index]):  temp = array[index-1]  array[index-1] = array[index]  array[index] = temp  return array  return array 

วิเคราะห์ความซับซ้อนของโค้ด

จากโค้ดในบรรทัดที่ 2 มีความซับซ้อนเป็น   จึงทำให้ best case และ worst case โค้ดมีความซับซ้อน   เหมือนกัน

อ้างอิง

  1. Self Organization (pdf), 2004

รายการจ, ดต, วเอง, การแนะนำว, บทความน, งหมดหร, อบางส, วนควรย, ายไปโครงการว, ตำรา, อภ, ปราย, เน, องจากการจ, ดร, ปแบบเน, อหาไม, ตรงตามนโยบายของว, เด, ยท, เป, นสาราน, กรม, และอาจเข, าก, บโครงการว, ตำรามากกว, งกฤษ, self, organizing, list, เป, นรายการท, การจ, ดการล. mikaraenanawa bthkhwamnithnghmdhruxbangswnkhwryayipokhrngkarwikitara xphipray enuxngcakkarcdrupaebbenuxhaimtrngtamnoybaykhxngwikiphiediythiepnsaranukrm aelaxacekhakbokhrngkarwikitaramakkwaraykarcdtwexng xngkvs self organizing list epnraykarthimikarcdkarladbkhwamsakhykhxngxngkhprakxbphayinraykardwytwexng odythixingcakkarwiekhraahphvtikrrminkarcdtwexngephuxprbprungewlainkarekhathungkhxmulodyechliysingmicudmunghmay khxngraykarcdtwexng khux prbprungprasiththiphaphkhxngkarkhnhaechingesndwykaryayraykarthiekhathungbxyipxyuthibriewnhwkhxngraykar enuxha 1 karwiekhraahewlathangansahrbkarekhathung 1 1 Best case 1 2 Worst case 2 twxyangkhntxnwithi Algorithm 2 1 Move to front Method MTF 2 1 1 hlkkarthangan 2 1 2 khxdi 2 1 3 khxesiy 2 1 4 twxyangokhdinphasa Python 2 1 5 wiekhraahkhwamsbsxnkhxngokhd 2 2 Count Method frequency counter 2 2 1 hlkkarthangan 2 2 2 khxdi 2 2 3 khxesiy 2 2 4 twxyangokhdinphasa Python 2 2 5 wiekhraahkhwamsbsxnkhxngokhd 2 3 Transpose Method 2 3 1 hlkkarthangan 2 3 2 khxdi 2 3 3 khxesiy 2 3 4 twxyangokhdinphasa Python 2 3 5 wiekhraahkhwamsbsxnkhxngokhd 3 xangxingkarwiekhraahewlathangansahrbkarekhathung aekikhBest case aekikh krnithikhxmulhruxohndthitxngkarekhathungnnepnswnhwkhxngkhxmul sungcathaihmikhwamsbsxnepn O 1 displaystyle O 1 Worst case aekikh krnithikhxmulhruxohndthitxngkarekhathungnnepnswnthaykhxngkhxmul hruximmixyuinraykar sungcathaihmikhwamsbsxnthimikarthanganaebbechingesnepn O n displaystyle O n twxyangkhntxnwithi Algorithm aekikhMove to front Method MTF Count Method Frequency counter Transpose MethodMove to front Method MTF aekikh hlkkarthangan aekikh imwacathakarekhathungkhxmulthitaaehnngidid kcathakaryaykhxmulnnipiwtnraykaresmx khntxnwithicdohndphayinraykaraebb MTF khxdi aekikh samarthprbrupaebbkarekhathungkhxmulidxyangrwderw khxesiy aekikh cacdladbkhwamsakhykhxngkhxmulnnidyak twxyangokhdinphasa Python aekikh def move2front array selectNode n len array for i in range 0 n if selectNode array i item array pop i array insert 0 item return array return array wiekhraahkhwamsbsxnkhxngokhd aekikh cakokhdinbrrthdthi 3 aela6 mikhwamsbsxnepn O n displaystyle O n cungthaih best case aela worst case okhdmikhwamsbsxn O n displaystyle O n ehmuxnkn Count Method frequency counter aekikh hlkkarthangan aekikh khxmulaetlataaehnngcamikarekbkhacanwnkhrnginkarekhathungkhxmulnncaknncamikareriyngladbkhxmulihmtamkhwamthithiekhathungkhxmul sungwithikarnitxngichphunthiephimetiminkarcdekbkhxmul khntxnwithicdohndphayinraykaraebb Count Method frequency counter khxdi aekikh thxnihehnthungrupaebbkarekhathungkhxmulthiaethcringihsmcringmakkhun khxesiy aekikh txngmiphunthiephiminkarekbcanwnthinb aelaprbtwihekhakbkarepliynaeplngxyangrwderwidkhxnkhangyak twxyangokhdinphasa Python aekikh def freqCount array user memory n len array for i in range 0 n if array i user itemL array pop i itemC memory pop i itemC 1 for p in range 0 n if memory p lt itemC array insert p itemL memory insert p itemC return array memory return array memory wiekhraahkhwamsbsxnkhxngokhd aekikh cakokhdinbrrthdthi 3 aela8 mikhwamsbsxnepn O n displaystyle O n cungthaih best case okhdmikhwamsbsxn O n displaystyle O n aela worst case okhdmikhwamsbsxn O n 2 displaystyle O n 2 ephraami 2 nested loop Transpose Method aekikh hlkkarthangan aekikh imwacathakarekhathungkhxmulthitaaehnngidid kcathakaryaykhxmulnnpanghnaesmx khntxnwithicdohndphayinraykaraebb Transpose Method khxdi aekikh ichnganngayaelaichhnwykhwamcanxy khxesiy aekikh txngekhathunghlaykhxmulephuxthicayayephiyngkhrngediyw aelaichewlamakemuxkhxmulthitxngkarmitaaehnngxyuikl twxyangokhdinphasa Python aekikh def transpose array user n len array for index in range 0 n if index 0 and user array index return array elif user array index temp array index 1 array index 1 array index array index temp return array return array wiekhraahkhwamsbsxnkhxngokhd aekikh cakokhdinbrrthdthi 2 mikhwamsbsxnepn O n displaystyle O n cungthaih best case aela worst case okhdmikhwamsbsxn O n displaystyle O n ehmuxnknxangxing aekikhSelf Organization pdf 2004ekhathungcak https th wikipedia org w index php title raykarcdtwexng amp oldid 8748489, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

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