HASH MID SQUARE

16:54 Pemrograman Web 2 Comments



Hai semuanya, selamat datang di blog ini. Kali ini saya akan menjelaskan mengenai hash mid square. Apa itu hash mid square? Sebelum menjelaskannya kita ketahui dahalu apa itu hashing. Hashing adalah trasnformasi dari sebuah string menjadi sebuah value atau key yang merepresentasikan string original yang lebih pendek. Hash merupakan suatu metode yg secara langsung mengakses record-record dalam suatu tabel dengan melakukan transformasi aritmatik pada key yang menjadi alamat dalam tabel tersebut. Key ini merupakan suatu input dari pemakai di mana pada umumnya berupa nilai atau string karakter. Tujuan Hashing untuk menemukan fungsi yang memudahkan perhitungan untuk memetakan setiap nilai kunci kedalam suatu nilai kosong. Fungsi Hash (dilambangkan dengan h(key)) bertugas untuk mengubah key menjadi suatu nilai dalam interval [0....LEVELSIZE-1], dimana "LEVELSIZE" yaitu jumlah maksimum dari record-record yang dapat ditampung dalam tabel.
Beberapa Fungsi Hash yang umumnya digunakan adalah :
a Division-Remainder(Pembagian sisa)
b Truncation(Pemenggalan)
c Folding(Lipatan)
d Multiplication(Perkalian)
e Mid-Square
Sekarang saya akan menjelaskan Mid-Square. Mid Square merupakan Square string/identifier nya kemudian menggunakan jumlah bit yang tepat, lalu dari tengah – tengah square kita dapat kan key nya.Mid Square teknik hashing ini nilai kunci di kuadratkan, kemudian menentukan digit yang akan dikutip dari tengah, hasilnya memberikan alamt relatif. Jika alamat relatif yang diinginkan sejumlah n digit, maka digit dipenggal diantara kedua ujung hasil perpangkatan kunci, menyisakan n digit dari tengah.
Ini merupakan contoh Hash Mid Square
# include <iostream.h>
# include <string.h>
# include <stdlib.h>
# include <conio.h>
# include <math.h>


int main( )
{
   clrscr( );

   cout << endl << "Mid-Square Hashing Method" << endl;
   cout << "*************************" << endl << endl;

   unsigned int iNumber = 0;
   unsigned int iLimit = 0;

   cout << "Masukkan nomer anda? = N = ";
   cin >> iNumber;

   cout << endl << "Masukkan batas Anda? = K = ";
   cin >> iLimit;

   unsigned long lNumber = powl(iNumber, 2);

   char sNumber[50] = {NULL};

   ultoa(lNumber, sNumber, 10);

   int iCount = (strlen(sNumber) - iLimit);
   int iLength = 0;

   char sTemp[30] = {NULL};

   cout << endl << "K * K = "<< lNumber << endl;

   for (int i = 0; i < iCount; i ++)
   {
      iLength = (strlen(sNumber) - 1);

      if ( (i % 2) == 0)
      {
      strset(sTemp, NULL);
      strncpy(sTemp, sNumber, iLength);

      strset(sNumber, NULL);
      strcpy(sNumber, sTemp);
      }

      else
      {
      strrev(sNumber);
      strset(sTemp, NULL);
      strncpy(sTemp, sNumber, iLength);
      strrev(sTemp);

      strset(sNumber, NULL);
      strcpy(sNumber, sTemp);
      }
   }

   int iHashKey = atoi(sNumber);

    cout << endl << "Hashing Key = " << iHashKey;

    getch( );
    return 0;
 }

Segitu saja yang bisa saya jelaskan,mohon maaf bila ada kesalahan. Bila ada yang kurang di mengerti atau ingin menambahkan kesalahan saya, mohon komentar dibawah ini. Terimakasih ^^

HANNA TASYA
1154091
D4TI1B
ALGORITMA & STRUKTUR DATA

2 komentar: