consolidate all repos to one for archive
This commit is contained in:
3
semester_2/osnove_algoritmov/naloga_1/.gitignore
vendored
Normal file
3
semester_2/osnove_algoritmov/naloga_1/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.idea/*
|
||||
cmake-build-debug/*
|
||||
CMakeLists.txt
|
1
semester_2/osnove_algoritmov/naloga_1/README.md
Normal file
1
semester_2/osnove_algoritmov/naloga_1/README.md
Normal file
@@ -0,0 +1 @@
|
||||
Navodila v folder navodila
|
172
semester_2/osnove_algoritmov/naloga_1/main.cpp
Normal file
172
semester_2/osnove_algoritmov/naloga_1/main.cpp
Normal file
@@ -0,0 +1,172 @@
|
||||
#include <iostream>
|
||||
#include <ctime>
|
||||
|
||||
|
||||
using namespace std;
|
||||
|
||||
void swap(int *a, int *b) {
|
||||
int t = *a;
|
||||
*a = *b;
|
||||
*b = t;
|
||||
}
|
||||
|
||||
int partition(int A[], int low, int high) {
|
||||
int m = (low + high) / 2;
|
||||
swap(&A[low], &A[m]);
|
||||
|
||||
int w = A[low];
|
||||
int i = low;
|
||||
int j = high;
|
||||
|
||||
while (j > i) {
|
||||
while (A[j] >= w && j > low) j = j - 1;
|
||||
while (A[i] <= w && i < high) i = i + 1;
|
||||
if (i < j) {
|
||||
swap(&A[i], &A[j]);
|
||||
}
|
||||
}
|
||||
swap(&A[low], &A[j]);
|
||||
return j;
|
||||
}
|
||||
|
||||
void quickSort(int A[], int low, int high) {
|
||||
if (low < high) {
|
||||
int j = partition(A, low, high);
|
||||
quickSort(A, low, j - 1);
|
||||
quickSort(A, j + 1, high);
|
||||
}
|
||||
}
|
||||
|
||||
void bubbleSort(int A[], int length) {
|
||||
int rep = 0;
|
||||
for (int i = 0; i < length; i++) {
|
||||
if (rep == 10000) {
|
||||
cout << ".";
|
||||
rep = 0;
|
||||
}
|
||||
rep++;
|
||||
for (int j = 0; j < length - i - 1; j++) {
|
||||
if (A[j] < A[j + 1]) swap(&A[j], &A[j + 1]);
|
||||
}
|
||||
}
|
||||
cout << "\n";
|
||||
}
|
||||
|
||||
void fillArray(int A[], int length) {
|
||||
for (int i = 0; i < length; i++) {
|
||||
A[i] = rand();
|
||||
}
|
||||
}
|
||||
|
||||
void highToLow(int A[], int length) {
|
||||
int base = length;
|
||||
for (int i = 0; i < length; i++) {
|
||||
A[i] = base;
|
||||
base--;
|
||||
}
|
||||
}
|
||||
|
||||
void print(int A[], int length) {
|
||||
for (int i = 0; i < length; i++) {
|
||||
cout << A[i] << " ";
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
bool check(const int A[], int length) {
|
||||
for (int i = 0; i < length - 1; i++) {
|
||||
if (A[i] > A[i + 1]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void menu() {
|
||||
cout << "1 ... Generate random sequence \n"
|
||||
"2 ... Generate sorted rising sequence \n"
|
||||
"3 ... Generate sorted falling sequence \n"
|
||||
"4 ... Print sequence \n"
|
||||
"5 ... quickSort sequence \n"
|
||||
"6 ... bobbleSort sequence \n"
|
||||
"7 ... Check sequence \n"
|
||||
"0 ... End \n \n"
|
||||
"Your choice: ";
|
||||
}
|
||||
|
||||
int main() {
|
||||
int length;
|
||||
// int A[length];
|
||||
int *A = NULL;
|
||||
int low = 0;
|
||||
int high = length - 1;
|
||||
srand(time(nullptr));
|
||||
bool running = true;
|
||||
int selection;
|
||||
clock_t start, finish;
|
||||
double duration;
|
||||
|
||||
do {
|
||||
menu();
|
||||
cin >> selection;
|
||||
cout << endl;
|
||||
switch (selection) {
|
||||
case 1:
|
||||
cout << "dolzina";
|
||||
cin >> length;
|
||||
high = length - 1;
|
||||
A = new int[length];
|
||||
fillArray(A, length);
|
||||
break;
|
||||
case 2:
|
||||
cout << "dolzina";
|
||||
cin >> length;
|
||||
high = length - 1;
|
||||
A = new int[length];
|
||||
fillArray(A, length);
|
||||
quickSort(A, low, high);
|
||||
break;
|
||||
case 3:
|
||||
cout << "dolzina";
|
||||
cin >> length;
|
||||
high = length - 1;
|
||||
A = new int[length];
|
||||
highToLow(A, length);
|
||||
break;
|
||||
case 4:
|
||||
print(A, length);
|
||||
break;
|
||||
case 5:
|
||||
start = clock();
|
||||
quickSort(A, low, high);
|
||||
finish = clock();
|
||||
duration = (double) (finish - start) / CLOCKS_PER_SEC;
|
||||
cout << "Time to sort " << duration << "\n";
|
||||
break;
|
||||
case 6:
|
||||
start = clock();
|
||||
bubbleSort(A, length);
|
||||
finish = clock();
|
||||
duration = (double) (finish - start) / CLOCKS_PER_SEC;
|
||||
cout << "Time to sort " << duration << "\n";
|
||||
break;
|
||||
case 7:
|
||||
if (check(A, length)) {
|
||||
cout << "Sequence is sorted \n";
|
||||
} else {
|
||||
cout << "Sequence isn't sorted \n";
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
running = false;
|
||||
break;
|
||||
default:
|
||||
cout << "Wrong selection!" << endl;
|
||||
break;
|
||||
}
|
||||
cout << endl;
|
||||
} while (running);
|
||||
delete[]A;
|
||||
|
||||
return 0;
|
||||
}
|
BIN
semester_2/osnove_algoritmov/naloga_1/navodila/navodila.pdf
Normal file
BIN
semester_2/osnove_algoritmov/naloga_1/navodila/navodila.pdf
Normal file
Binary file not shown.
3
semester_2/osnove_algoritmov/naloga_2/.gitignore
vendored
Normal file
3
semester_2/osnove_algoritmov/naloga_2/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.idea/*
|
||||
cmake-build-debug/*
|
||||
CMakeLists.txt
|
1
semester_2/osnove_algoritmov/naloga_2/README.md
Normal file
1
semester_2/osnove_algoritmov/naloga_2/README.md
Normal file
@@ -0,0 +1 @@
|
||||
Navodila v folder navodila
|
140
semester_2/osnove_algoritmov/naloga_2/main.cpp
Normal file
140
semester_2/osnove_algoritmov/naloga_2/main.cpp
Normal file
@@ -0,0 +1,140 @@
|
||||
#include <iostream>
|
||||
#include <stack>
|
||||
#include <fstream>
|
||||
|
||||
#define NEPREGLEDANO 0
|
||||
#define V_OBDELAVI 1
|
||||
#define RAZVITO 2
|
||||
|
||||
|
||||
struct Vozlisce {
|
||||
int predhodnik;
|
||||
int dolzina;
|
||||
int status;
|
||||
int indeks;
|
||||
};
|
||||
|
||||
void ISKANJE_V_GLOBINO(int s, int size, const int G[], Vozlisce vozl[]) {
|
||||
|
||||
std::stack<int> stack;
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
vozl[i].status = NEPREGLEDANO;
|
||||
vozl[i].dolzina = -1;
|
||||
vozl[i].predhodnik = -1;
|
||||
vozl[i].indeks = i;
|
||||
}
|
||||
vozl[s].status = V_OBDELAVI;
|
||||
vozl[s].dolzina = 0;
|
||||
vozl[s].predhodnik = -1;
|
||||
stack.push(s); // vstavi na vrh sklada
|
||||
|
||||
while (!stack.empty()) {
|
||||
int v = stack.top();//vzemi vozlišče iz vrha sklada
|
||||
stack.pop();
|
||||
for (int i = 0; i < size; ++i) {
|
||||
if (G[size * v + i] == 1) {
|
||||
if (vozl[i].status == NEPREGLEDANO) {
|
||||
vozl[i].status = V_OBDELAVI;
|
||||
vozl[i].dolzina = vozl[v].dolzina + 1;
|
||||
vozl[i].predhodnik = vozl[v].indeks;
|
||||
stack.push(i); // vstavi na vrh sklada
|
||||
}
|
||||
}
|
||||
}
|
||||
vozl[v].status = RAZVITO;
|
||||
}
|
||||
}
|
||||
|
||||
void IZPIS_POTI(int iskano, Vozlisce vozl[]) {
|
||||
if (vozl[iskano].predhodnik == -1) {
|
||||
std::cout << vozl[iskano].indeks << " ";
|
||||
return;
|
||||
} else {
|
||||
IZPIS_POTI(vozl[iskano].predhodnik, vozl);
|
||||
std::cout << vozl[iskano].indeks << " ";
|
||||
}
|
||||
}
|
||||
|
||||
void IZPIS_SEZNAMA(Vozlisce vozl[], int size) {
|
||||
for (int i = 0; i < size; i++) {
|
||||
std::cout << "indeks: " << vozl[i].indeks << "\n";
|
||||
std::cout << "predhodnik: " << vozl[i].predhodnik << "\n";
|
||||
std::cout << "dolzina: " << vozl[i].dolzina << "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
void menu() {
|
||||
std::cout << "Iskanje v globino:\n"
|
||||
"1) Preberi graf\n"
|
||||
"2) Pozeni iskanje iz vozlisca s\n"
|
||||
"3) Izpis seznama vozlisc in njihovih podatkov\n"
|
||||
"4) Izpis poti med vozliscema s in d\n"
|
||||
"0) Konec\n"
|
||||
"Vasa izbira: ";
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::cout << "Hello, World!" << std::endl;
|
||||
Vozlisce *vozl;
|
||||
int *G;
|
||||
int stevilo_vozlisc;
|
||||
int stevilo_povezav;
|
||||
std::ifstream f("graf_big.txt");
|
||||
f >> stevilo_vozlisc;
|
||||
f >> stevilo_povezav;
|
||||
|
||||
vozl = new Vozlisce[stevilo_vozlisc];
|
||||
G = new int[stevilo_vozlisc * stevilo_vozlisc];
|
||||
|
||||
|
||||
for (int i = 0; i < stevilo_povezav; ++i) {
|
||||
int v1, v2, cena;
|
||||
f >> v1 >> v2 >> cena;
|
||||
v1 = v1 - 1;
|
||||
v2 = v2 - 1;
|
||||
G[stevilo_vozlisc * v1 + v2] = 1;
|
||||
G[stevilo_vozlisc * v2 + v1] = 1;
|
||||
}
|
||||
|
||||
bool running = true;
|
||||
int selection;
|
||||
int izbira;
|
||||
do {
|
||||
menu();
|
||||
std::cin >> selection;
|
||||
std::cout << std::endl;
|
||||
switch (selection) {
|
||||
case 1:
|
||||
std::cout << "Prebrano\n"
|
||||
"St.vozlisc: " << stevilo_vozlisc << " St.povezav: " << stevilo_povezav << "\n";
|
||||
|
||||
break;
|
||||
case 2:
|
||||
std::cout << "Izberi vozlisce: ";
|
||||
std::cin >> izbira;
|
||||
ISKANJE_V_GLOBINO(izbira, stevilo_vozlisc, G, vozl);
|
||||
break;
|
||||
case 3:
|
||||
IZPIS_SEZNAMA(vozl, stevilo_vozlisc);
|
||||
break;
|
||||
case 4:
|
||||
std::cout << "Izberi vozlisce: ";
|
||||
std::cin >> izbira;
|
||||
IZPIS_POTI(izbira, vozl);
|
||||
break;
|
||||
case 0:
|
||||
running = false;
|
||||
break;
|
||||
default:
|
||||
std::cout << "Wrong selection!\n";
|
||||
break;
|
||||
}
|
||||
std::cout << std::endl;
|
||||
} while (running);
|
||||
|
||||
|
||||
delete[] vozl;
|
||||
delete[] G;
|
||||
return 0;
|
||||
}
|
BIN
semester_2/osnove_algoritmov/naloga_2/navodila/C++ 2D polje.pdf
Normal file
BIN
semester_2/osnove_algoritmov/naloga_2/navodila/C++ 2D polje.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
semester_2/osnove_algoritmov/naloga_2/navodila/Vaja_2.pdf
Normal file
BIN
semester_2/osnove_algoritmov/naloga_2/navodila/Vaja_2.pdf
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,19 @@
|
||||
#include <fstream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main(){
|
||||
....
|
||||
ifstream f("graf.txt"); // odpremo datoteko (v isti mapi, kot je projekt oziroma exe datoteka)
|
||||
// če so težave z branjem, zapišite absolutno pot, npr: ifstream f("c:/graf.txt");
|
||||
|
||||
f >> stevilo_vozlisc; // v prvi vrstici datoteke imamo stevilo vozlisc
|
||||
f >> stevilo_povezav; // v drugi vrstici datoteke imamo stevilo povezav oziroma vrstic v nadaljevnaju datoteke
|
||||
ustvari matriko sosednosti C (2D polje); // priporočamo dinamično alokacijo
|
||||
ustvari polje V in dodaj vozlišča v V, kjer je ime=indeks;
|
||||
for(i to stevilo_povezav....){
|
||||
f >> v1 >> v2 >> cena; // v vsaki vrstici beremo 3 podatke (stevilke)
|
||||
v matriki C označi vozlišči v1 in v2 kot soseda
|
||||
}
|
||||
...
|
||||
}
|
3
semester_2/osnove_algoritmov/naloga_3/.gitignore
vendored
Normal file
3
semester_2/osnove_algoritmov/naloga_3/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.idea/*
|
||||
cmake-build-debug/*
|
||||
CMakeLists.txt
|
41
semester_2/osnove_algoritmov/naloga_3/QuickSort.cpp
Normal file
41
semester_2/osnove_algoritmov/naloga_3/QuickSort.cpp
Normal file
@@ -0,0 +1,41 @@
|
||||
//
|
||||
// Created by Nik on 16/04/2022.
|
||||
//
|
||||
|
||||
#include "QuickSort.h"
|
||||
|
||||
|
||||
void QuickSort::swap(Povezava *a, Povezava *b) {
|
||||
Povezava t = *a;
|
||||
*a = *b;
|
||||
*b = t;
|
||||
}
|
||||
|
||||
int QuickSort::partition(Povezava *A, int low, int high) {
|
||||
int m = (low + high) / 2;
|
||||
swap(&A[low], &A[m]);
|
||||
|
||||
int w = A[low].cost;
|
||||
int i = low;
|
||||
int j = high;
|
||||
|
||||
while (j > i) {
|
||||
while (A[j].cost >= w && j > low) j = j - 1;
|
||||
while (A[i].cost <= w && i < high) i = i + 1;
|
||||
if (i < j) {
|
||||
swap(&A[i], &A[j]);
|
||||
}
|
||||
}
|
||||
swap(&A[low], &A[j]);
|
||||
return j;
|
||||
}
|
||||
|
||||
void QuickSort::quickSort(Povezava *A, int low, int high) {
|
||||
if (low < high) {
|
||||
int j = partition(A, low, high);
|
||||
quickSort(A, low, j - 1);
|
||||
quickSort(A, j + 1, high);
|
||||
}
|
||||
}
|
||||
|
||||
|
24
semester_2/osnove_algoritmov/naloga_3/QuickSort.h
Normal file
24
semester_2/osnove_algoritmov/naloga_3/QuickSort.h
Normal file
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// Created by Nik on 16/04/2022.
|
||||
//
|
||||
|
||||
#ifndef NALOGA_3_QUICKSORT_H
|
||||
#define NALOGA_3_QUICKSORT_H
|
||||
|
||||
struct Povezava{
|
||||
int p, q, cost;
|
||||
};
|
||||
|
||||
class QuickSort {
|
||||
private:
|
||||
QuickSort() = default;
|
||||
public:
|
||||
static void swap(Povezava *a, Povezava *b);
|
||||
|
||||
static int partition(Povezava A[], int low, int high);
|
||||
|
||||
static void quickSort(Povezava A[], int low, int high);
|
||||
};
|
||||
|
||||
|
||||
#endif //NALOGA_3_QUICKSORT_H
|
1
semester_2/osnove_algoritmov/naloga_3/README.md
Normal file
1
semester_2/osnove_algoritmov/naloga_3/README.md
Normal file
@@ -0,0 +1 @@
|
||||
Navodila v folder navodila
|
169
semester_2/osnove_algoritmov/naloga_3/main.cpp
Normal file
169
semester_2/osnove_algoritmov/naloga_3/main.cpp
Normal file
@@ -0,0 +1,169 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <cstdlib>
|
||||
#include "QuickSort.h"
|
||||
|
||||
bool pogoj1(const int *S, const Povezava pov) {
|
||||
|
||||
if (S[pov.p] == 0 or S[pov.q] == 0) return false;
|
||||
return (S[pov.p] == S[pov.q]);
|
||||
}
|
||||
|
||||
bool pogoj2(const int *S, const Povezava pov) {
|
||||
|
||||
if (S[pov.p] == 0 or S[pov.q] == 0) return false;
|
||||
return (S[pov.p] != S[pov.q]);
|
||||
}
|
||||
|
||||
bool pogoj3(const int *S, const Povezava pov) {
|
||||
|
||||
if (S[pov.p] != 0 and S[pov.q] == 0) return true;
|
||||
if (S[pov.q] != 0 and S[pov.p] == 0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool pogoj4(const int *S, const Povezava pov) {
|
||||
|
||||
return (S[pov.p] == 0 and S[pov.q] == 0);
|
||||
}
|
||||
|
||||
void Kruskal(Povezava *P, Povezava *R, int st_vozlisc, int st_povezav) {
|
||||
QuickSort::quickSort(P, 0, st_povezav - 1);
|
||||
|
||||
int S[st_vozlisc + 1];
|
||||
for (int i = 0; i < st_vozlisc + 1; i++) S[i] = 0;
|
||||
|
||||
bool koncano = false;
|
||||
int i = 0;
|
||||
int st_sprej_pov = 0;
|
||||
int stevilo_mnozic = 1;
|
||||
|
||||
while (!koncano) {
|
||||
if (!pogoj1(S, P[i])) {
|
||||
if (pogoj2(S, P[i])) {
|
||||
R[st_sprej_pov] = P[i];
|
||||
st_sprej_pov = st_sprej_pov + 1;
|
||||
|
||||
int pridruzujem = S[P[i].p];
|
||||
int odstranjujem = S[P[i].q];
|
||||
for (int l = 0; l < st_vozlisc; l++) {
|
||||
if (S[l] == odstranjujem) S[l] = pridruzujem;
|
||||
}
|
||||
|
||||
} else if (pogoj3(S, P[i])) {
|
||||
R[st_sprej_pov] = P[i];
|
||||
st_sprej_pov = st_sprej_pov + 1;
|
||||
|
||||
if (S[P[i].p] != 0 and S[P[i].q] == 0) S[P[i].q] = S[P[i].p];
|
||||
if (S[P[i].q] != 0 and S[P[i].p] == 0) S[P[i].p] = S[P[i].q];
|
||||
|
||||
} else if (pogoj4(S, P[i])) {
|
||||
R[st_sprej_pov] = P[i];
|
||||
st_sprej_pov = st_sprej_pov + 1;
|
||||
|
||||
S[P[i].p] = stevilo_mnozic;
|
||||
S[P[i].q] = stevilo_mnozic;
|
||||
stevilo_mnozic += 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (st_sprej_pov == st_vozlisc - 1) {
|
||||
koncano = true;
|
||||
} else {
|
||||
i = i + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void nafilajRand(Povezava *&P, Povezava *&R, int st_vozlisc, int &st_povezav){
|
||||
st_povezav = (st_vozlisc * (st_vozlisc - 1)) / 2;
|
||||
P = new Povezava[st_povezav];
|
||||
R = new Povezava[st_vozlisc - 1];
|
||||
int k = 0;
|
||||
for(int i = 1; i <= st_vozlisc; i++){
|
||||
for(int j = 1 + i; j <= st_vozlisc; j++){
|
||||
if(i != j) {
|
||||
P[k].p = i;
|
||||
P[k].q = j;
|
||||
P[k].cost = rand();
|
||||
k++;
|
||||
}
|
||||
}
|
||||
}
|
||||
std::cout << "Vozlisca: " << st_vozlisc << " Povezave: " << st_povezav << "\n";
|
||||
}
|
||||
|
||||
void beri(Povezava *&P, Povezava *&R, int &st_vozlisc, int &st_povezav){
|
||||
std::ifstream f("graf2.txt");
|
||||
f >> st_vozlisc;
|
||||
f >> st_povezav;
|
||||
P = new Povezava[st_povezav];
|
||||
R = new Povezava[st_vozlisc - 1];
|
||||
for (int i = 0; i < st_povezav; ++i) {
|
||||
int v1, v2, cena;
|
||||
f >> v1 >> v2 >> cena;
|
||||
P[i].p = v1;
|
||||
P[i].q = v2;
|
||||
P[i].cost = cena;
|
||||
}
|
||||
f.close();
|
||||
std::cout << "Vozlisca: " << st_vozlisc << " Povezave: " << st_povezav << "\n";
|
||||
}
|
||||
|
||||
void menu() {
|
||||
std::cout << "Kruskalov algoritem - izbira: \n"
|
||||
"1 Preberi graf iz datoteke \n"
|
||||
"2 Generiraj nakljucni graf \n"
|
||||
"3 Pozeni \n"
|
||||
"4 Izpis sprejetih povezav \n"
|
||||
"0 Konec \n\n"
|
||||
"Vasa izbira: ";
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::cout << "Hello, World!" << std::endl;
|
||||
int st_povezav, st_vozlisc;
|
||||
clock_t start,finish;
|
||||
double duration;
|
||||
Povezava *R;
|
||||
Povezava *P;
|
||||
bool running = true;
|
||||
|
||||
while (running) {
|
||||
menu();
|
||||
int coich;
|
||||
std::cin >> coich;
|
||||
switch (coich) {
|
||||
case 1:
|
||||
beri(P,R,st_vozlisc,st_povezav);
|
||||
break;
|
||||
case 2:
|
||||
do{
|
||||
std::cout << "stevilo vozlisc: ";
|
||||
std::cin >> st_vozlisc;
|
||||
}while(st_vozlisc > 1500);
|
||||
nafilajRand(P, R, st_vozlisc, st_povezav);
|
||||
break;
|
||||
case 3:
|
||||
start = clock();
|
||||
Kruskal(P, R, st_vozlisc, st_povezav);
|
||||
finish = clock();
|
||||
duration = (double) (finish - start) / CLOCKS_PER_SEC;
|
||||
std::cout << "Time to sort " << duration << "\n";
|
||||
break;
|
||||
case 4:
|
||||
for (int i = 0; i < st_vozlisc - 1; i++) {
|
||||
std::cout << R[i].p << " " << R[i].q << " " << R[i].cost << "\n";
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
running = false;
|
||||
break;
|
||||
default:
|
||||
std::cout << " Napaka\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
BIN
semester_2/osnove_algoritmov/naloga_3/navodila/Vaja_3.pdf
Normal file
BIN
semester_2/osnove_algoritmov/naloga_3/navodila/Vaja_3.pdf
Normal file
Binary file not shown.
15
semester_2/osnove_algoritmov/naloga_3/navodila/graf.txt
Normal file
15
semester_2/osnove_algoritmov/naloga_3/navodila/graf.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
8
|
||||
13
|
||||
1 2 1
|
||||
2 3 2
|
||||
4 6 2
|
||||
3 5 3
|
||||
7 8 3
|
||||
1 3 4
|
||||
5 6 4
|
||||
2 5 5
|
||||
3 4 7
|
||||
4 5 10
|
||||
6 7 13
|
||||
6 8 15
|
||||
4 7 20
|
21
semester_2/osnove_algoritmov/naloga_3/navodila/graf2.txt
Normal file
21
semester_2/osnove_algoritmov/naloga_3/navodila/graf2.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
10
|
||||
19
|
||||
1 2 33
|
||||
1 3 10
|
||||
1 4 56
|
||||
2 4 13
|
||||
2 5 21
|
||||
3 4 23
|
||||
3 6 24
|
||||
3 7 65
|
||||
4 5 51
|
||||
4 7 20
|
||||
5 7 17
|
||||
5 8 35
|
||||
6 7 40
|
||||
6 9 72
|
||||
7 8 99
|
||||
7 9 45
|
||||
7 10 42
|
||||
8 10 38
|
||||
9 10 83
|
15
semester_2/osnove_algoritmov/naloga_3/navodila/graf_rot.txt
Normal file
15
semester_2/osnove_algoritmov/naloga_3/navodila/graf_rot.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
8
|
||||
13
|
||||
7 4 20
|
||||
8 6 15
|
||||
7 6 13
|
||||
5 4 10
|
||||
4 3 7
|
||||
5 2 5
|
||||
3 1 4
|
||||
6 5 4
|
||||
5 3 3
|
||||
8 7 3
|
||||
3 2 2
|
||||
6 4 2
|
||||
2 1 1
|
@@ -0,0 +1,29 @@
|
||||
#include <fstream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main(){
|
||||
....
|
||||
ifstream f("graf.txt"); // odpremo datoteko (v isti mapi, kot je projekt oziroma exe datoteka)
|
||||
// če so težave z branjem, zapišite absolutno pot, npr: ifstream f("c:/graf.txt");
|
||||
|
||||
f >> stevilo_vozlisc; // v prvi vrstici datoteke imamo stevilo vozlisc
|
||||
f >> stevilo_povezav; // v drugi vrstici datoteke imamo stevilo povezav oziroma vrstic v nadaljevnaju datoteke
|
||||
ustvari matriko sosednosti C (2D polje); // priporočamo dinamično alokacijo
|
||||
for(i to stevilo_povezav....){
|
||||
f >> v1 >> v2 >> cena; // v vsaki vrstici beremo 3 podatke (stevilke)
|
||||
v matriki C označi vozlišči v1 in v2 kot soseda in vpiši ceno povezave
|
||||
}
|
||||
|
||||
ustvari polje povezav P; // priporočamo dinamično alokacijo
|
||||
for(p to stevilo_vozlisc....) { // preiščemo zgornji trikotni del matrike C
|
||||
for (q=p+1 to stevilo_vozlisc....) {
|
||||
if (C[p][q] != infinity) {
|
||||
cena = C[p][q];
|
||||
ustvari objekt tipa Povezava in mu določi atribute p, q in cena;
|
||||
shrani objekt v polje P;
|
||||
}
|
||||
}
|
||||
}
|
||||
...
|
||||
}
|
3
semester_2/osnove_algoritmov/naloga_4/.gitignore
vendored
Normal file
3
semester_2/osnove_algoritmov/naloga_4/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.idea/*
|
||||
cmake-build-debug/*
|
||||
CMakeLists.txt
|
1
semester_2/osnove_algoritmov/naloga_4/README.md
Normal file
1
semester_2/osnove_algoritmov/naloga_4/README.md
Normal file
@@ -0,0 +1 @@
|
||||
Navodila v folder navodila
|
145
semester_2/osnove_algoritmov/naloga_4/main.cpp
Normal file
145
semester_2/osnove_algoritmov/naloga_4/main.cpp
Normal file
@@ -0,0 +1,145 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
struct vozlisce {
|
||||
int vez, predhodnik, cena;
|
||||
};
|
||||
|
||||
int izlociNajmanjsega(std::vector<int> &voz, const std::vector<vozlisce> &rez) {
|
||||
int tmp = voz[0];
|
||||
int rem_voz = 0;
|
||||
for (int i = 0; i < voz.size(); ++i) {
|
||||
if (rez[tmp].cena > rez[voz[i]].cena) {
|
||||
tmp = rez[voz[i]].vez;
|
||||
rem_voz = i;
|
||||
}
|
||||
}
|
||||
|
||||
if(rem_voz == 0){
|
||||
voz.erase(voz.begin());
|
||||
}else {
|
||||
voz.erase(voz.begin() + rem_voz);
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
void dijkstrovAlgoritem(int **&G, int s, const int st_vozlisc, std::vector<vozlisce> &rez) {
|
||||
std::vector<int> Q;
|
||||
for (int i = 0; i < st_vozlisc; ++i) {
|
||||
vozlisce tmp;
|
||||
tmp.vez = i;
|
||||
tmp.predhodnik = -1;
|
||||
tmp.cena = INT32_MAX;
|
||||
Q.push_back(i);
|
||||
rez.push_back(tmp);
|
||||
}
|
||||
|
||||
rez[s].cena = 0;
|
||||
int preg_voz = 0;
|
||||
while (!Q.empty()) {
|
||||
preg_voz = izlociNajmanjsega(Q, rez);
|
||||
for (int i = 0; i < st_vozlisc; i++) {
|
||||
if (G[preg_voz][i] > 0) {
|
||||
if(rez[i].cena > rez[preg_voz].cena + G[preg_voz][i]){
|
||||
rez[i].cena = rez[preg_voz].cena + G[preg_voz][i];
|
||||
rez[i].predhodnik = preg_voz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void izpisPoti(const std::vector<vozlisce> &rez, const int s, int v){
|
||||
if(s == rez[v].vez){
|
||||
std::cout << rez[v].vez << " cena: " << rez[v].cena << "\n";
|
||||
return;
|
||||
}else{
|
||||
izpisPoti(rez,s,rez[v].predhodnik);
|
||||
std::cout << rez[v].vez << " cena: " << rez[v].cena << "\n";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void beri(int **&G, int &st_vozlisc) {
|
||||
int st_povezav;
|
||||
std::ifstream f("graf.txt");
|
||||
f >> st_vozlisc;
|
||||
f >> st_povezav;
|
||||
int v1, v2, cena;
|
||||
|
||||
G = new int *[st_vozlisc];
|
||||
|
||||
for (int i = 0; i < st_vozlisc; i++) {
|
||||
G[i] = new int[st_vozlisc];
|
||||
}
|
||||
|
||||
for (int i = 0; i < st_vozlisc; i++) {
|
||||
for (int j = 0; j < st_vozlisc; j++) {
|
||||
G[i][j] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < st_povezav; i++) {
|
||||
f >> v1 >> v2 >> cena;
|
||||
G[v1 - 1][v2 - 1] = cena;
|
||||
G[v2 - 1][v1 - 1] = cena;
|
||||
}
|
||||
std::cout << "Vozlisca: " << st_vozlisc << " Povezave: " << st_povezav << "\n";
|
||||
|
||||
// for (int i = 0; i < st_vozlisc; ++i) {
|
||||
// for (int j = 0; j < st_vozlisc; ++j) {
|
||||
// std::cout << G[j][i] << " ";
|
||||
// }
|
||||
// std::cout << "\n";
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
void menu(){
|
||||
std::cout << "Dijkstrov algoritem - izbira:\n"
|
||||
"1 Nalozi graf\n"
|
||||
"2 Zagon algoritma\n"
|
||||
"3 Izpis najkrajse poti\n"
|
||||
"0 Konec\n\n"
|
||||
"Vasa izbira: ";
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::cout << "Hello, World!" << std::endl;
|
||||
int **G;
|
||||
int st_vozlisc = 0;
|
||||
std::vector<vozlisce> rez;
|
||||
|
||||
bool runing = true;
|
||||
int condition;
|
||||
int tmp, iskanoVozlisce;
|
||||
while(runing){
|
||||
menu();
|
||||
std::cin >> condition;
|
||||
switch (condition) {
|
||||
case 1:
|
||||
beri(G, st_vozlisc);
|
||||
break;
|
||||
case 2:
|
||||
std::cout << "Iskano vozlisce: ";
|
||||
std::cin >> iskanoVozlisce;
|
||||
dijkstrovAlgoritem(G, iskanoVozlisce, st_vozlisc, rez);
|
||||
break;
|
||||
case 3:
|
||||
// for (int i = 0; i < rez.size(); ++i) {
|
||||
// std::cout << rez[i].vez << " " << rez[i].predhodnik << " " << rez[i].cena << "\n";
|
||||
// }
|
||||
std::cout << "Izberi vozlisce: ";
|
||||
std::cin >> tmp;
|
||||
izpisPoti(rez,iskanoVozlisce, tmp);
|
||||
break;
|
||||
case 0:
|
||||
runing = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
BIN
semester_2/osnove_algoritmov/naloga_4/navodila/Vaja_4.pdf
Normal file
BIN
semester_2/osnove_algoritmov/naloga_4/navodila/Vaja_4.pdf
Normal file
Binary file not shown.
14
semester_2/osnove_algoritmov/naloga_4/navodila/graf.txt
Normal file
14
semester_2/osnove_algoritmov/naloga_4/navodila/graf.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
8
|
||||
12
|
||||
1 2 3
|
||||
1 3 6
|
||||
1 8 1
|
||||
2 3 2
|
||||
2 8 2
|
||||
3 4 1
|
||||
4 5 6
|
||||
4 6 3
|
||||
4 7 4
|
||||
5 6 3
|
||||
6 7 2
|
||||
7 8 10
|
3
semester_2/osnove_algoritmov/naloga_5/.gitignore
vendored
Normal file
3
semester_2/osnove_algoritmov/naloga_5/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.idea/*
|
||||
cmake-build-debug/*
|
||||
CMakeLists.txt
|
1
semester_2/osnove_algoritmov/naloga_5/README.md
Normal file
1
semester_2/osnove_algoritmov/naloga_5/README.md
Normal file
@@ -0,0 +1 @@
|
||||
Navodila v folder navodila
|
139
semester_2/osnove_algoritmov/naloga_5/main.cpp
Normal file
139
semester_2/osnove_algoritmov/naloga_5/main.cpp
Normal file
@@ -0,0 +1,139 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
|
||||
void FLOYD_WARSHALL(int **&C, int **&D, int **&PI, int st_vozlisc) {
|
||||
|
||||
D = new int *[st_vozlisc];
|
||||
PI = new int *[st_vozlisc];
|
||||
|
||||
for (int i = 0; i < st_vozlisc; i++) {
|
||||
PI[i] = new int[st_vozlisc];
|
||||
D[i] = new int[st_vozlisc];
|
||||
}
|
||||
|
||||
for (int i = 0; i < st_vozlisc; i++) {
|
||||
for (int j = 0; j < st_vozlisc; j++) {
|
||||
D[i][j] = C[i][j];
|
||||
if (i != j && C[i][j] != INT16_MAX) { //inf
|
||||
PI[i][j] = i;
|
||||
} else {
|
||||
PI[i][j] = INT16_MAX; //nill
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (int k = 0; k < st_vozlisc; k++) {
|
||||
for (int i = 0; i < st_vozlisc; i++) {
|
||||
for (int j = 0; j < st_vozlisc; j++) {
|
||||
if (D[i][j] > D[i][k] + D[k][j]) {
|
||||
D[i][j] = D[i][k] + D[k][j];
|
||||
PI[i][j] = PI[k][j];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void beri(int **&C, int &st_vozlisc) {
|
||||
int st_povezav;
|
||||
std::ifstream f("graf3.txt");
|
||||
f >> st_vozlisc;
|
||||
f >> st_povezav;
|
||||
int v1, v2, cena;
|
||||
|
||||
C = new int *[st_vozlisc];
|
||||
|
||||
for (int i = 0; i < st_vozlisc; i++) {
|
||||
C[i] = new int[st_vozlisc];
|
||||
}
|
||||
|
||||
for (int i = 0; i < st_vozlisc; i++) {
|
||||
for (int j = 0; j < st_vozlisc; j++) {
|
||||
if (i == j) {
|
||||
C[i][j] = 0;
|
||||
} else {
|
||||
C[i][j] = INT16_MAX; //inf
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < st_povezav; i++) {
|
||||
f >> v1 >> v2 >> cena;
|
||||
C[v1 - 1][v2 - 1] = cena;
|
||||
}
|
||||
std::cout << "Vozlisca: " << st_vozlisc << " Povezave: " << st_povezav << "\n";
|
||||
}
|
||||
|
||||
void izpisPoti(int **&PI, int s, int g) {
|
||||
if (s == g) {
|
||||
std::cout << s << " ";
|
||||
} else {
|
||||
if (PI[s][g] == INT16_MAX) { //inf
|
||||
std::cout << "med " << s << " in " << g << " ni poti";
|
||||
} else {
|
||||
izpisPoti(PI, s, PI[s][g]);
|
||||
std::cout << g << " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void menu() {
|
||||
std::cout << "Dijkstrov algoritem - izbira:\n"
|
||||
"1 Nalozi graf\n"
|
||||
"2 Zagon algoritma\n"
|
||||
"3 Izpis najkrajse poti\n"
|
||||
"0 Konec\n\n"
|
||||
"Vasa izbira: ";
|
||||
}
|
||||
|
||||
int main() {
|
||||
|
||||
std::cout << "Hello, World!" << std::endl;
|
||||
int **C;
|
||||
int **D;
|
||||
int **PI;
|
||||
int st_vozlisc = 0;
|
||||
bool runing = true;
|
||||
int condition;
|
||||
int s, g;
|
||||
bool func = false;
|
||||
while (runing) {
|
||||
menu();
|
||||
std::cin >> condition;
|
||||
switch (condition) {
|
||||
case 1:
|
||||
beri(C, st_vozlisc);
|
||||
break;
|
||||
case 2:
|
||||
FLOYD_WARSHALL(C, D, PI, st_vozlisc);
|
||||
func = true;
|
||||
break;
|
||||
case 3:
|
||||
if (func) {
|
||||
do {
|
||||
std::cout << "Izberi s:";
|
||||
std::cin >> s;
|
||||
} while (s > st_vozlisc);
|
||||
do {
|
||||
std::cout << "Izberi g:";
|
||||
std::cin >> g;
|
||||
}while(g > st_vozlisc);
|
||||
std::cout << "Pot: ";
|
||||
izpisPoti(PI, s, g);
|
||||
std::cout << "\n Cena: " << D[s][g];
|
||||
std::cout << "\n";
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
runing = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
BIN
semester_2/osnove_algoritmov/naloga_5/navodila/Vaja_5.pdf
Normal file
BIN
semester_2/osnove_algoritmov/naloga_5/navodila/Vaja_5.pdf
Normal file
Binary file not shown.
8
semester_2/osnove_algoritmov/naloga_5/navodila/graf1.txt
Normal file
8
semester_2/osnove_algoritmov/naloga_5/navodila/graf1.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
3
|
||||
6
|
||||
1 2 10
|
||||
1 3 4
|
||||
2 3 3
|
||||
2 1 5
|
||||
3 1 8
|
||||
3 2 2
|
8
semester_2/osnove_algoritmov/naloga_5/navodila/graf2.txt
Normal file
8
semester_2/osnove_algoritmov/naloga_5/navodila/graf2.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
4
|
||||
6
|
||||
1 2 8
|
||||
1 4 1
|
||||
2 3 1
|
||||
3 1 4
|
||||
4 2 2
|
||||
4 3 9
|
11
semester_2/osnove_algoritmov/naloga_5/navodila/graf3.txt
Normal file
11
semester_2/osnove_algoritmov/naloga_5/navodila/graf3.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
5
|
||||
9
|
||||
1 2 3
|
||||
1 3 8
|
||||
1 5 -4
|
||||
2 4 1
|
||||
2 5 7
|
||||
3 2 4
|
||||
4 1 2
|
||||
4 3 -5
|
||||
5 4 6
|
3
semester_2/osnove_algoritmov/naloga_6/.gitignore
vendored
Normal file
3
semester_2/osnove_algoritmov/naloga_6/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.idea/*
|
||||
cmake-build-debug/*
|
||||
CMakeLists.txt
|
1
semester_2/osnove_algoritmov/naloga_6/README.md
Normal file
1
semester_2/osnove_algoritmov/naloga_6/README.md
Normal file
@@ -0,0 +1 @@
|
||||
Navodila v folder navodila
|
159
semester_2/osnove_algoritmov/naloga_6/main.cpp
Normal file
159
semester_2/osnove_algoritmov/naloga_6/main.cpp
Normal file
@@ -0,0 +1,159 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
|
||||
const int inf = 9999;
|
||||
|
||||
struct struktura {
|
||||
std::vector<int> vozlisca;
|
||||
int dolzina;
|
||||
|
||||
bool isInPot(const int p){
|
||||
for (int i = 0; i < vozlisca.size(); ++i) {
|
||||
if(vozlisca[i] == p) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
struktura vzemiIzVrste(std::vector<struktura> &Q) {
|
||||
struktura tmp;
|
||||
int index = 0;
|
||||
|
||||
for (int i = 0; i < Q.size(); ++i) {
|
||||
if(Q[index].dolzina > Q[i].dolzina){
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
auto it = Q.begin();
|
||||
it += index;
|
||||
tmp = Q[index];
|
||||
Q.erase(it);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
void razvejiInOmeji(int **&G, const int s, const int g, std::vector<std::vector<int>>& R, const int stVozlisc , int& dolzina) {
|
||||
std::vector<struktura> Q;
|
||||
|
||||
struktura pot;
|
||||
pot.vozlisca.push_back(s);
|
||||
pot.dolzina = 0;
|
||||
dolzina = inf;
|
||||
|
||||
Q.push_back(pot);
|
||||
|
||||
struktura p;
|
||||
struktura p1;
|
||||
int u;
|
||||
|
||||
while (!Q.empty()) {
|
||||
|
||||
p = vzemiIzVrste(Q);
|
||||
u = p.vozlisca.back();
|
||||
|
||||
for (int v = 0; v < stVozlisc; ++v) {
|
||||
if (G[u][v] != inf) {
|
||||
if(!p.isInPot(v)){
|
||||
p1 = p;
|
||||
p1.vozlisca.push_back(v);
|
||||
p1.dolzina += G[u][v];
|
||||
if(v == g){
|
||||
if(p1.dolzina < dolzina){
|
||||
R.clear();
|
||||
R.push_back(p1.vozlisca);
|
||||
dolzina = p1.dolzina;
|
||||
}else if(p1.dolzina == dolzina){
|
||||
R.push_back(p1.vozlisca);
|
||||
}
|
||||
}else if(p.dolzina < dolzina){
|
||||
Q.push_back(p1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void izpis(const std::vector<std::vector<int>>& R, int dolzina){
|
||||
for (int i = 0; i < R.size(); ++i) {
|
||||
for (int j = 0; j < R[i].size(); ++j) {
|
||||
std::cout << R[i][j] << "->";
|
||||
}
|
||||
}
|
||||
std::cout << ", cena = " << dolzina << "\n";
|
||||
}
|
||||
|
||||
void beri(int**& C, int& stVozlisc) {
|
||||
int stPovezav;
|
||||
std::ifstream f("graf2.txt");
|
||||
f >> stVozlisc;
|
||||
f >> stPovezav;
|
||||
int v1, v2, cena;
|
||||
|
||||
C = new int *[stVozlisc];
|
||||
|
||||
for (int i = 0; i < stVozlisc; i++) {
|
||||
C[i] = new int[stVozlisc];
|
||||
}
|
||||
|
||||
for (int i = 0; i < stVozlisc; ++i) {
|
||||
for (int j = 0; j < stVozlisc; ++j) {
|
||||
C[i][j] = inf;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < stPovezav; i++) {
|
||||
f >> v1 >> v2 >> cena;
|
||||
C[v1 - 1][v2 - 1] = cena;
|
||||
}
|
||||
std::cout << "Vozlisca: " << stVozlisc << " Povezave: " << stPovezav << "\n";
|
||||
|
||||
// for (int i = 0; i < stVozlisc; ++i)
|
||||
// {
|
||||
// for (int j = 0; j < stVozlisc; ++j)
|
||||
// {
|
||||
// std::cout << C[i][j] << " ";
|
||||
// }
|
||||
// std::cout << "\n";
|
||||
// }
|
||||
}
|
||||
|
||||
void menu(){
|
||||
std::cout << "Razveji in omeji - izbira:\n"
|
||||
"1 Preberi podatke iz datoteke\n"
|
||||
"2 Iskanje poti med vozliscema s in g\n"
|
||||
"3 Konec\n"
|
||||
"Vasa izbira:";
|
||||
}
|
||||
|
||||
int main() {
|
||||
int **C;
|
||||
int stVozlisc;
|
||||
std::vector<std::vector<int>> R;
|
||||
int dolzina;
|
||||
|
||||
int izbira, start, end;
|
||||
bool running = true;
|
||||
while (running){
|
||||
menu();
|
||||
std::cin >> izbira;
|
||||
switch (izbira) {
|
||||
case 1:
|
||||
beri(C, stVozlisc);
|
||||
break;
|
||||
case 2:
|
||||
std::cout << "Izberi s: ";
|
||||
std::cin >> start;
|
||||
std::cout << "Izberi end: ";
|
||||
std::cin >> end;
|
||||
razvejiInOmeji(C,start,end,R,stVozlisc, dolzina);
|
||||
izpis(R, dolzina);
|
||||
break;
|
||||
default:
|
||||
running = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
BIN
semester_2/osnove_algoritmov/naloga_6/navodila/Vaja_6.pdf
Normal file
BIN
semester_2/osnove_algoritmov/naloga_6/navodila/Vaja_6.pdf
Normal file
Binary file not shown.
24
semester_2/osnove_algoritmov/naloga_6/navodila/graf1.txt
Normal file
24
semester_2/osnove_algoritmov/naloga_6/navodila/graf1.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
8
|
||||
22
|
||||
1 2 3
|
||||
1 8 4
|
||||
2 1 3
|
||||
2 8 5
|
||||
2 3 9
|
||||
3 2 9
|
||||
3 4 4
|
||||
3 7 5
|
||||
4 3 4
|
||||
4 5 2
|
||||
5 4 2
|
||||
5 6 3
|
||||
5 7 8
|
||||
6 5 3
|
||||
6 7 4
|
||||
7 3 5
|
||||
7 5 8
|
||||
7 6 4
|
||||
7 8 2
|
||||
8 1 4
|
||||
8 2 5
|
||||
8 7 2
|
58
semester_2/osnove_algoritmov/naloga_6/navodila/graf2.txt
Normal file
58
semester_2/osnove_algoritmov/naloga_6/navodila/graf2.txt
Normal file
@@ -0,0 +1,58 @@
|
||||
8
|
||||
56
|
||||
1 2 18
|
||||
1 3 18
|
||||
1 4 38
|
||||
1 5 6
|
||||
1 6 49
|
||||
1 7 7
|
||||
1 8 48
|
||||
2 1 20
|
||||
2 3 38
|
||||
2 4 28
|
||||
2 5 43
|
||||
2 6 28
|
||||
2 7 25
|
||||
2 8 42
|
||||
3 1 40
|
||||
3 2 7
|
||||
3 4 21
|
||||
3 5 48
|
||||
3 6 24
|
||||
3 7 23
|
||||
3 8 15
|
||||
4 1 27
|
||||
4 2 5
|
||||
4 3 39
|
||||
4 5 27
|
||||
4 6 50
|
||||
4 7 44
|
||||
4 8 35
|
||||
5 1 7
|
||||
5 2 25
|
||||
5 3 11
|
||||
5 4 30
|
||||
5 6 16
|
||||
5 7 24
|
||||
5 8 48
|
||||
6 1 19
|
||||
6 2 5
|
||||
6 3 49
|
||||
6 4 43
|
||||
6 5 1
|
||||
6 7 24
|
||||
6 8 4
|
||||
7 1 10
|
||||
7 2 25
|
||||
7 3 41
|
||||
7 4 34
|
||||
7 5 42
|
||||
7 6 33
|
||||
7 7 7
|
||||
8 1 17
|
||||
8 2 23
|
||||
8 3 47
|
||||
8 4 4
|
||||
8 5 44
|
||||
8 6 42
|
||||
8 7 24
|
Reference in New Issue
Block a user