603 Matching Annotations
  1. Dec 2024
    1. ⟨ 3,−2 ⟩ InsertLast(P3,P2), Next(P2)⟨ 2,−1 ⟩ InsertLast(P3,P2), Next(P2)⟨ 1,−2 ⟩ InsertLast(P3,P2), Next(P2)⟨ 0,−10 ⟩ InsertLast(P3,P2), Next(P2)

      koefisien jadi minus karena P2 dikurang basically 0-P2 jadi mines (-)

    2. ⟨ 3,2 ⟩ InsertLast (P3,P1), Next(P1)⟨ 2,1 ⟩ InsertLast (P3,P1), Next(P1)⟨ 1,2 ⟩ InsertLast (P3,P2), Next(P2)⟨ 0,10 ⟩ InsertLast (P3,P1), Next(P1)

      Bergantian sesuai urutan

    Annotators

    Annotators

    Annotators

    1. List linier “biasa”

      list biasa yang cocok, first menunjuk ke elemen pertama list, first nil kalau kosong, first berubah menjadi top dan top menunjuk ke top stack, top bernilai nil kalau stack kosong

    Annotators

    Annotators

    Annotators

    1. p = newNode(x); /* dummy baru */

      elemen dummy akan berganti menjadi elemen dummy yang lain

      tanpa while loop HARUSNYA LEBIH EFISIEN. Jadi elemen baru akan dicopy ke dummy yang sudah ada dan akan dibuat node baru untuk dummy yang ditunjuk oleh dummy yang menjadi elemen

    2. typedef struct node* Address;typedef struct node { ElType info; Address next; } Node;

      Oke, kita sederhanakan ya! 😊

      Kenapa ADT List Linear Pakai Tag (tNode):

      • Karena ada pointer ke dirinya sendiri!
      • Di list linear, next itu adalah pointer yang menunjuk ke struct yang sama (struct tNode).
      • Compiler butuh nama/tag (tNode) untuk ngerti kalau next menunjuk ke dirinya sendiri.

      Contoh: c typedef struct tNode { ElType info; // Data di node Address next; // Pointer ke struct tNode lain } Node; Kalau tanpa tag, compiler bingung karena belum selesai baca tipe struct-nya.


      Kenapa ADT Stack Nggak Butuh Tag:

      • Karena nggak ada pointer ke dirinya sendiri.
      • Stack cuma punya array (buffer) dan variabel biasa (idxTop), nggak ada elemen yang menunjuk ke struct Stack.
      • Jadi, tag nggak diperlukan.

      Contoh: c typedef struct { ElType buffer[CAPACITY]; // Array penyimpan elemen int idxTop; // Penunjuk elemen teratas } Stack;


      Perbedaannya:

      • List Linear: Pakai pointer ke struct yang sama → butuh tag.
      • Stack: Nggak pakai pointer ke dirinya sendiri → nggak butuh tag.

      Udah lebih jelas, kan? 😄

    Annotators

    1. Pointer

      selain ada pointer next, ada previous untuk nunjuk ke elemen sebelumnya

      bisa maju mundur semuanya karena kalo yg biasa ga bisa mundur

      tapi ini harus dibayar cukup mahal karena butuh memory yang lebih besar

    2. “Dummy Element”

      sama kaya tadi cuman ditaruh diakhir.

      dummy disini berlaku seperti sentinel. (mark)

      Elemen terakhir adalah elemen sebelum dummy (jika next elemen p merupakan address dari dummy)

    3. List dengan dua elemen

      Tentu! Berikut penjelasan dengan bahasa simpel dan poin-poin:

      Apa itu Dummy Element?

      • Elemen kosong di awal list.
      • Tidak menyimpan data penting.
      • first selalu menunjuk ke dummy element (tidak pernah berubah).

      Kenapa Dummy Element Ada?

      • Sederhanakan Algoritma:
      • Kalau ada insert di awal (insert first), kita nggak perlu ubah pointer first. Fokusnya hanya pada elemen setelah dummy.
      • List Kosong Tetap Punya Dummy:
      • Dummy element bikin list kosong tetap terstruktur (nggak perlu bikin kondisi khusus).
      • Konsistensi:
      • Operasi seperti insert/delete lebih seragam karena selalu mulai dari dummy.

      Cara Kerja Dummy Element:

      • Elemen pertama yang "asli" adalah di first.next, bukan di first.
      • Kalau list kosong, first.next = null (dummy tetap ada).

      Keuntungan:

      • Nggak Perlu Banyak Kondisi:
      • Misal, kalau list kosong, tetap ada dummy, jadi kode lebih simpel.
      • Kurangi Kesalahan:
      • Pointer first nggak pernah berubah, jadi aman.
      • Operasi Insert/Delete Lebih Mudah:
      • Fokus langsung ke elemen setelah dummy tanpa repot atur pointer first.

      Contoh Insert First:

      • Tanpa Dummy:
      • Harus ubah first ke elemen baru.
      • Periksa kalau list kosong dulu.
      • Dengan Dummy:
      • Tinggal atur first.next ke elemen baru.
      • Pointer first nggak usah diubah.

      Dummy element itu intinya biar kode lebih simpel, aman, dan seragam. Udah lebih jelas? 😊

    4. Dummy Element”

      DUMMY ELEMENT: bukan elemen sesungguhnya, tidak menyimpan informasi yang akan kita gunakan.

      biasanya hanya untuk kajian ilmiah. Elemen pertama bukan yang ditunjuk first, tapi yang ditunjuk NEXT DARI FIRST

      muncul karena ketika insert first/last atau at akan berbeda algoritmanya.

      kalau insertfirst akan memengaruhi first dan kasus lainnya.

      pake dummy element di awal ini, maka first ini gapernah berubah dan selalu nunjuk ke dummy element

    5. List yang Elemen Terakhir Menunjuk pada Diri Sendiri

      ini misalkan buat bahasa pemrograman yang ga punya NIL, jadi nodenya nunjuk ke diri sendiri (kalo di akhir)

      Biasanya hanya untuk kajian ilmiah saja

    Annotators

    1. lustrasi: pemakaian memori list

      Kondisi awal, FirstAvail menunjuk ke nol. FirstList = NIL

      Saat InsertFirst: FirstList nunjuk ke 0 dan nextnya NIL FirstAvail nunjuk ke 1 (nunjuk ke elemen yg available berikutnya)

      InsertFirst lagi FirstList pindah ke 1, next nunjuk ke 0 FirstAvail nunjuk ke elemen yang kedua.

      DeleteLast Node yang terakhir dimasukkan dikembalikan ke FirstAvail (iya emg jadi kaya stack) FirstList menjadi 1

    Annotators

    Annotators

    Annotators

    1. hile (p↑.next ≠ NIL) and (p↑.info ≠ x) do

      TANPA BOOLEAN: tidak ada boolean dalam while loop

      kondisi setelah keluar dari loop: apakah P^.Next = Nil (sampe ujung) ata P^.info = X (Ditemukan)

    2. iterateproses(p)stop (p↑.next = NIL)

      perbedaan dengan skema 2, disini P saat keluar dari loop ini akan menunjuk ke elemen terakhir.

      di skema 2: P saat keluar loop akan bernilai NIL.

    Annotators

  2. Nov 2024

    Annotators

    Annotators

    Annotators

    1. List linier “biasa” ~ priority queue

      karna tail gaada gunanya mending pake list linear biasa (next) kalo mau hapus elemen ga masalah selalu dari depan dan insert pun bakal search dulu dari depan sampe posisi yang tepat untuk elemen tersebut

    2. List Linier yang dicatat first dan last ≍ queue “biasa

      untuk insert element (enqueue), harus insert sesuai prioritas, kalau mulai dari tail gapunya pointer ke depan, jadi selalu mulai dari depan dan melihat posisi yang pas dimana.

    Annotators

    Annotators

    1. CF

      flag untuk bilangan unsigned. kalo operasi ada carrynya, misal : 14+3 = 17 tp pada 4 bit jadi 1 dan ada carry 1.

      kalo ini terjadi, carry flag nyala (overflow pada bilangan unsigned)

    2. signed

      jika operasi hasilnya negatif, maka sign flag (SF) akan diset

      overflow ini kaya kalo penjumlahan 4 bit 6+4 = 10 kan harusnya tp karna 4 bit jadi -6, nah ini ga sesuai sama "keinginan manusia" lah jadi ini overflow dan OF akan di set

    1. Lossless Decomposition

      asumsi gw adalah kalo lossless ini emg ada kondisi khusus (liat next) berarti ga semua data itu lossless, kalo emg udh lossy dari awal gabisa di ubah jadi lossless.

    2. A functional dependency is a generalization of the notion of a key

      emg FD ini generalisasi dari konsep key jadi emg mirip, menghubungkan suatu atribut unik untuk identifikasi atribut lain

    3. Lossless Decomposition

      jika tidak ada informasi yang hilang.

      cara memenuhi lossless adalah jika setelah dipecah dan digabgung lg dengan natural join akan sama hasilnya dengan relasi awal

      ini emg masih perkenalan apa itu lossy dan lossless

    4. Decomposition

      untuk mengatasi repetisi, dekomposisi jadi 2 skema. ex jadi instructor dan department.

      masalahnya kalo ada kasus misal nama nya sama, jadi ada kelebihan informasi

    5. here is repetition of information

      masalah dari hasil join ini ada repetisi misal di yang kerja di physics ada Einstein dan Gold,

      informasi building dan budgetnya jadi berulang

    Annotators

    1. List dengan Dummy Element di Akhirdan Pencatatan Alamat Elemen Akhir

      ini lebih praktis dari dummy last yang gapake "LAST" karena kalo yg sblmnya tetep harus looping dari awal

    Annotators

    Annotators

    Annotators

    1. Binary Vs. Non-Binary Relationships

      Binary vs. Non-Binary Relationships:

      Binary Relationships: Melibatkan dua entities. Beberapa hubungan non-binary dapat dipecah menjadi beberapa binary relationships untuk menangani kasus tertentu. Misalnya, hubungan ternary parents dapat dipecah menjadi father dan mother untuk memungkinkan informasi parsial. Non-Binary Relationships: Melibatkan lebih dari dua entities (n-ary, untuk n > 2) dan digunakan saat hubungan lebih jelas jika beberapa entities berpartisipasi bersama dalam satu hubungan. Contoh: proj_guide.

    2. Aggregation

      aggregasi disini beda dengan di aljabar relasional dan sql.

      jadinya, instructor ini kalo ga pake aggregasi bakal terhubung ke semua relasi di atas, biar ga terlalu banyak panah, dibuat kotak besar satu relasi DAN entity ini di hubungkan ke kotaknya aja. contoh bener di slide bwah

    3. condition-defined

      berdasarkan kondisi

      ook jadi bedanya coondition defined dan user defined, kalo di sql condition defined itu udah di auto assign relasi2nya kalo user defined harus diinput satu2

    4. Completeness constraint:specifies whether or not anentity in the higher-level entityset must belong to at leastone of the lower-level entitysets within a generalization

      Completeness constraint menentukan apakah sebuah entity di higher-level entity set harus menjadi anggota dari salah satu lower-level entity sets.

    5. onstraint on whether or notentities may belong to morethan one lower-level entity setwithin a single generalizatio

      Menentukan apakah entities bisa termasuk dalam lebih dari satu lower-level entity set.

    6. Constraint on which entities canbe members of a given lower-level entity se

      Kendala dalam menentukan apakah entity dapat menjadi anggota lower level entity set (Membership constraint)

    7. Generalization

      mulainya dari bawah, misal ada attribut permanent pengen dibuat higher levelnya employee

      Generalization adalah proses desain bottom-up, di mana kita menggabungkan beberapa entitas dengan fitur yang sama ke dalam entitas tingkat lebih tinggi. Specialization dan generalization adalah kebalikan satu sama lain dan digambarkan dengan simbol yang sama dalam diagram E-R. Hubungan ISA menunjukkan pewarisan dari superclass ke subclass. Contoh: "Employee" dapat memiliki subclass seperti "Permanent" dan "Temporary," serta "Officer," "Teller," atau "Secretary."

      jjadi dia mulainya dari sub class dulu instead of higher levelnya?

      Betul! Generalization dimulai dari subclass (entitas tingkat lebih rendah) dan menggabungkannya menjadi superclass (entitas tingkat lebih tinggi). Jadi, kita mengidentifikasi fitur yang sama di beberapa subclass dan menyatukannya ke dalam satu entitas umum yang disebut superclass.

    8. Specialization

      Specialization adalah proses desain top-down di mana kita membagi entitas menjadi subkelompok yang memiliki karakteristik unik. Subkelompok ini menjadi entitas tingkat lebih rendah yang mewarisi semua atribut dari entitas tingkat lebih tinggi, tetapi memiliki atribut atau hubungan tambahan yang khusus. Proses ini digambarkan dengan simbol segitiga bertuliskan "ISA", yang menunjukkan hubungan pewarisan. Contohnya, "Customer" adalah subkelompok dari "Person."

    9. Attribute inheritance – a lower-level entity set inherits all theattributes and relationshipparticipation of the higher-levelentity set to which it is linked

      atribut yang berada di "lower level" mewarisi atribut yang ada di atasnya. Misal employee mewarisi person (jadi ada 1 + 3 atribut)

    10. wedesignate subgroupings within anentity set that are distinctivefrom other entities in the set.

      dibagi menjadi subgroup pakai ISA, jadi person dibagi jadi employee dan customer

    1. Dasar (tanpa perlakuan khusus untuk List kosong)

      menghitung banyak elemen. kan bakal pake cnt, karna kalo list kosong ya cnt ttp 0

      contoh lain, mencari elemen terbesar yang mana. ga bisa pake traversal, karena kalo kosong ya gaada yang terbesar, gaberlaku pada list kosong. jadi kasus kedua, ada perlakukan khusus kalo kosong

      contoh lain, kasus rata-rata, pembagi gaboleh nol

    Annotators

    1. penghapusan elemen

      jadi ngubah reference nunjuk dari elemen ke yang pengen di hapus jadi di skipp.

      bisa 2 kasus, hapus dan ga dipake lagi di "free" kalo di hapus dan di pake lagi berarti ga di "free"

      "free" ini ngehapus memory yak

    2. List diacu melalui Address elemen pertamanya (first)

      oke tiap node akan ada reference lanjut ke node mana? kalo node pertama gmn?

      jadi harus buat kotak node baru lagi bernama First untuk mencatat alamat dari node pertama

    Annotators

    1. node* Address

      kalo di notal "pointer to node"

      ok intinya ini pake tag node biar bisa memberi instruksi ke preprocessor membuat struct baru node dengan Address yang beda-beda.

      pada umumnya itu typedef Node (cara aksesnya)

      cuman karna ini pake tag, instead of mengubah, kita membuat baru dengan address yang bisa beda beda

      ini typedef struct node* Address (perhatikan bahwa struct di tulis juga)

    2. node

      ini tag

      tag dan type nya dibedakan (node dan Node) untuk mengatasi strictnya bahasa C dimana tipe tidak bisa di declare setelah operasi lain. dibuatlah jadi tag, im not to sure so ask again ke GPT

    3. Node: “next” mencatat alamat elemen berikutnya

      Node ini berbeda dengan array, kalo array yaudah per memory isi elemen. Kalo node bisa butuh 2 memory, 1 untuk elemen dan 1 untuk "menunjuk" ke elemen node selanjutnya

    Annotators

  3. Oct 2024
    1. =A ́B/C

      ini namanya stack of float.

      sebenernya bisa ttp stack of token, tapi ribet, sebelum dioperasikan harus diconvert terus setlah operasi di convert jadi token lagi

      tambahan, harusnya kalo angka gaakan ada negatif

    Annotators

    1. Pemakaian Stack• Pemanggilan prosedur• Perhitungan ekspresi aritmatika• Rekursivitas• Backtracking

      Function Calls: Like stacking ingredients when cooking – the last added ingredient is used first.

      Recursion: Climbing a mountain – you reach the top and then come back down through the same checkpoints in reverse.

      Arithmetic Calculations: Old calculators – they solve operations in the order they were entered, using the last numbers first.

      Backtracking: Navigating a maze – if you hit a dead end, you backtrack to the previous path until you find the way out.

    2. LIFO (Last In First Out)

      elemen yang terakhir dimasukkan ke dalam stack akan menjadi yang pertama dihapus, seperti ketika menumpuk buku, buku terakhir yang ditaruh di atas akan menjadi yang pertama diambil.

    Annotators

    1. Harus dilakukan aksi menggeser elemen untuk menciptakan ruangan kosong

      harus geser.

      pergeseran hanya dilakukan ketika TAIL == IdxMax dan hanya saat ingin tambah elemen lagi

    Annotators