Форум программистов, компьютерный форум CyberForum.ru

Алгоритм Шимбелла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Авторизация на прокси http://www.cyberforum.ru/cpp-beginners/thread297482.html
Пишу на С программу, забирающую определенное число с веб-страницы (температуру). Все работает. Добавил работу через прокси. Работает. А вот с работой с прокси через авторизацию - нефига. Помогите разобраться в генерации HTTP запросов. При работе через прокси без авторизации сначала посылаю серверу запрос: "CONNECT myxa.opsb.ru:80 HTTP/1.1\r\n\r\n" и затем забираю страницу запросом "GET...
C++ Вывести в алфавитном порядке последние слова всех предложений Помогите, пожалуйста, исправить код, а то дуб дубом((Не могу никак дойти( Дан текст, состоящий из N (2<=N<=10) строк с максимальной длиной 80 символов. Необходимо вывести в алфавитном порядке последние слова всех предложений. Считать, что текст написан синтаксически грамотно, в качестве знаков препинания используются точка и запятая, слова состоят только из букв, перенос слов по слогам... http://www.cyberforum.ru/cpp-beginners/thread297472.html
C++ Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть
а)Дана последовательность n элементов в виде массива. Найти минимальный элемент массива,паставить его на первое место,остальные эл.сдвигаются. б)Дана матрица А размерности m*n и вектор Х размерности m. Найти произведение Х*А. Помогите решить!!!у меня не получается!!!
строка с нечетной длиной слов C++
Дана строка. Сформировать новую строку, скопировав в нее слова исходной строки, которые имеют нечетную длину, разделить слова пробелом. На Си. Очень прошу вашей помощи со строками дуб дубом
C++ Структура последовательности типа http://www.cyberforum.ru/cpp-beginners/thread297427.html
в чем смысл этой структуры...Я ничего не могу найти в интернете по этой теме...
C++ В массиве B[10] найти максимальный элемент, его порядковый номер и произведение его элементов. Ниже программа на определение максимального элемента(нужно только в printf чет записать)). В заголовке написано что еще нужно, желательно по этому тексту программы делать. # include <stdio.h> # define B10 int main(void) { int B, max, i; printf(“\n vvedite %d chisel:\n”, 10); for(i=0; i<10; i++); подробнее

Показать сообщение отдельно
Healius
4 / 4 / 0
Регистрация: 06.05.2011
Сообщений: 50

Алгоритм Шимбелла - C++

18.05.2011, 10:59. Просмотров 1602. Ответов 1
Метки (Все метки)

Алгоритм Шимбелла позволяет находить минимальные (максимальные)
пути между вершинами, состоящие из заданного количества ребер.
Введем специальные операции над элементами матрицы:
1) Операция умножения двух величин а и b при возведении матрицы в
степень соответствует их алгебраической сумме:
2) Операция сложения двух величин а и b заменяется выбором из этих
величин минимального (максимального) элемента:
Нули при этом игнорируются. Минимальный (максимальный) элемент
выбирается из ненулевых элементов. Ноль в результате операции может быть
получен лишь тогда, когда все элементы нулевые.
С помощью этих операций длины минимальных (максимальных) путей
определяются возведением в степень весовой матрицы Ω.

помогите реализовать на c++ этот алгоритм. сколько не бьюсь - не получается.

C++
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
int** shimbell(int** W,int n,int kol){
    if(kol==0)
        return W;
    else{
        int** temp=new int*[n];
        int** c=new int*[n];
        for(int i=0;i<n;i++){
            temp[i]=new int[n];
            c[i]=new int[n];
            for(int j=0;j<n;j++){
                c[i][j]=W[i][j];
                temp[i][j]=W[i][j];
            }
        }
        for(int r=0;r<kol;r++){
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                    for(int k=0;k<n;k++){
                        c[i][j]+=plus_sh(temp[i][k],W[k][j]);
                    }
            temp=c;
        }
        return c;
    }
}
В параметрах функции: W-матрица весов графа, n-её размерность, kol-количество ребер в нужных максимальных/минимальных путях. (соответствует степени, в которую надо возвести матрицу с учетом операций Шимбелла). код выдает неправильные результаты, ошибку не найти никак %)

Добавлено через 1 час 10 минут
функция plus_sh - реализация операции сложения по Шимбеллу
C++
1
2
3
4
5
6
7
8
9
10
11
12
int plus_sh(int a,int b){
    if((a==0)&&(b==0))
        return 0;
    else{
        if(a==0)
            return b;
        if(b==0)
            return a;
        else
            return min(a,b);
    }
}
ЗЫ: да, коряво написано...%)

Добавлено через 4 часа 27 минут
да что ж так у всех с графами плохо...?

Добавлено через 2 часа 28 минут
ап...

Добавлено через 18 часов 47 минут
ап...
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru