سورس الگوریتم کراسکال (kruskal) به زبان اسمبلی
در این بخش سورس الگوریتم کراسکال (kruskal) به زبان اسمبلی را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی Assembly نوشته شده است. در ادامه می توانید توضیحات و تصاویر مربوط به این پروژه را مشاهده کنید.
توضیحات پروژه
کراسکال (Kruskal) الگوریتمی است که به منظور پیدا کردن یک زیرگراف فراگیر همبند با وزن کمتر در یک گراف وزن دار و همچنین برای پیدا کردن کوچکترین درخت فراگیر در یک گراف وزن دار مورد استفاده قرار می گیرد. این الگوریتم از رویکرد حریصانه استفاده می کند و با گراف به صورت یک جنگل برخورد می کند که هر گره یک درخت منفرد در نظر گرفته می شود. در این جنگل یک درخت (گره) فقط زمانی می تواند به درخت دیگر وصل شود که مشخصات MST یا همان درخت پوشای کمینه را نقض نکند و در بین گزینه های موجود کمترین هزینه را داشته باشد.
بعد از اجرای پروژه مقدار خانه های ماتریس به عنوان ورودی از کاربر گرفته می شود و سپس برنامه کمترین وزن بین گره ها را پیدا کرده و نتیجه را در صفحه نمایش می دهد. این برنامه با استفاده از برنامه Emu8086 نوشته شده است که می توانید آن را از لینک مورد نظر دانلود کنید.
قسمت های از سورس کد
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | exit macro mov ax,4c00h int 21h endm ;---------------------- gets macro str pushreg lea dx,str mov ah,0ah int 21h popreg endm ;---------------------- prints macro str pushreg lea dx,str mov ah,09h int 21h popreg endm ;---------------------- itoa macro n,str,len local while pushreg lea di,str mov dl,len mov dh,0 add di,dx mov byte ptr[di],'$' mov ax,n mov cl,10 while: dec di div cl add ah,48 mov [di],ah mov ah,0 cmp al,0 jne while popreg endm ;---------------------- setparent macro index,value pushreg lea si,parent mov bl,index mov bh,0 add si,bx mov al,value mov byte ptr[si],al popreg endm ;---------------------- printtest macro k1 pushreg mov cl,k1 mov ch,0 itoa cx,str2,5 prints newline prints str2 clearstr str2,5,' ' popreg endm ;---------------------- .model small .stack 64 .data strlist1 label byte max1 db 10 len1 db ? str1 db 11 dup('$') str2 db 5 dup(' '),'$' Matrix db 1,2,3,4,5,6,7,8,9 num db ? indexL db 'index[ $' indexR db ' ]= $' msgtitle db " *************** Kruskal ***************",10,13,10,13,'$' msgvertix db "The Number of Vertix=3",10,13,10,13,'$' msgAdj db "Please Enter the Adjacency Matrix",10,13,'$' msg1 db 10,13,"The Minimum Cost Edges Are:",10,13,'$' msg2 db 10,13,"Minimum Cost = $" .code main proc far mov ax,@data mov ds,ax ;========================= prints msgtitle prints msgvertix prints msgAdj getmatrix Matrix kruskal getc exit main endp ;========================================================================= compute_addres proc mov address,0 mov di,0 ; mov ah, 0 ; mov al, row ; ax=row dec al ; I=I-1 mul base ; (i-1)*20 mov di, ax ;start address of row mov al, col ; ax=col mov ah, 00 dec ax ;j=j-1 mul two ;(j-1)*2 add di, ax ;di=(i-1)*20+(i-1)*2 mov address,di ret compute_addres endp end main |
هیچ نظری ثبت نشده است