Модератор
Эксперт функциональных языков программированияЭксперт Python
35522 / 19997 / 4186
Регистрация: 12.02.2012
Сообщений: 33,177
Записей в блоге: 13
1

Взаимные преобразования "Матрица смежности" <-> "Матрица инцидентности"

08.01.2014, 11:47. Показов 1704. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вершины неорентированного графа без петель пронумерованы числами от 0 до некоторого n. Из матрицы инцидентности получить матрицу смежности, а из матрицы смежности - матрицу инцидентности.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2014, 11:47
Ответы с готовыми решениями:

Нужны преобразования: список смежных вершин -> список инцидентных ребер -> матрица инцидентности -> матрица смежности
Нужны такие преобразования: список смежных вершин -&gt; список инцидентных ребер -&gt; матрица...

TurboPascal: граф, матрица смежности и матрица инцидентности.
Доброго времени суток. Помогите мне пожалуйста. Как в паскале с помощью матрицы построить матрицу...

Графы. Матрица смежности и матрица инцидентности
Как из матрицы смежность сделать матрицу инцендентнасти?

Графы. Ввод матрицы смежности, матрица инцидентности и список инцидентности неориентированного графа
Здраствуйте. Помогите пожалуйста, а то вообще не врубаюсь в это. Надо написать процедуры ввода...

2
Модератор
Эксперт функциональных языков программированияЭксперт Python
35522 / 19997 / 4186
Регистрация: 12.02.2012
Сообщений: 33,177
Записей в блоге: 13
14.01.2014, 19:44  [ТС] 2
Из матрицы инцидентности матрицу смежности:

Lisp
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
;; Транспонирование матрицу
 
(defun transp-matr (matr)
  (apply 'mapcar (cons 'list matr)))
 
;; Установить единицы в позиции (i,j) и (j,i)
;; матрицы смежности
 
(defun setij (matr lst)
  (let* ((i (car lst))
         (j (cadr lst))
         (irow (nth i matr))
         (jrow (nth j matr)))
        (setf (nth j irow) 1)
        (setf (nth i jrow) 1)))
       
;; Построить нулевую марицу n*n
 
(defun make-zero-matr (n)
  (let ((matr nil)
        (zrow (iter (for i from 1 to n) (collecting 0))))
       (iter (for i from 1 to n) (collecting (copy zrow) into matr))
       matr))
      
;; Дать номера ненулевых элементов
 
(defun get-num (row)
  (list (position 1 row) (+ 1 (position 1 (removef 1 row)))))
      
;; Из матрицы инцидентности получить матрицу смежности
 
(defun inc2sm (matr)
  (let* ((n (length matr))
         (z (make-zero-matr n)))
        (iter (for col in (transp-matr matr))
              (setij z (get-num col)))
        z))
 
(inc2sm '((1 1 0 0 0) (1 0 1 0 0) (0 0 0 0 1) (0 1 1 1 0) (0 0 0 1 1)))
 
==> ((0 1 0 1 0) (1 0 0 1 0) (0 0 0 0 1) (1 1 0 0 1) (0 0 1 1 0))
2
1049 / 943 / 107
Регистрация: 04.11.2012
Сообщений: 972
Записей в блоге: 3
14.01.2014, 22:00 3
Catstail Матрицу инцидентности применять не приходилось.
Мне кажется есть смысл в быстром преобразовании списка смежности в матрицу смежности. А то пока эти нули вобъешь...
Lisp
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
;Если вершины помечены числами.
(defun List->Adj/Matr (lst)
  (let* ((row (remove-duplicates (reduce #'append lst)))
         (ver (sort (copy-list row) #'<)))
    (mapcar (lambda (i)
      (list i
            (mapcar (lambda (x)  
                      (if  (member x (cdr (assoc i lst))) 1 0))
                    ver)))
    ver)))
 
;Ориентированный.
> (List->Adj/Matr '((1 2 3 6) (2 3) (3 4) (4 5) (6 5)))
((1 (0 1 1 0 0 1))
 (2 (0 0 1 0 0 0))
 (3 (0 0 0 1 0 0))
 (4 (0 0 0 0 1 0))
 (5 (0 0 0 0 0 0))
 (6 (0 0 0 0 1 0)))
 
;Неориентированный.
> (List->Adj/Matr '((1 2 5) (2 1 3 4) (3 2 5) (4 2 5) (5 1 4)))
((1 (0 1 0 0 1))
 (2 (1 0 1 1 0))
 (3 (0 1 0 0 1))
 (4 (0 1 0 0 1))
 (5 (1 0 0 1 0)))
2
14.01.2014, 22:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2014, 22:00
Помогаю со студенческими работами здесь

Матрица Смежности и Инцидентности
Есть матрица смежности и инцидентности для одного графа. Требуется перевести: 1) Матрицу...

Матрица Смежности и Инцидентности
Помогите пожалуйста, если не тяжело Есть матрица смежности и инцидентности для одного графа....

Матрица инцидентности в матрицу смежности
Добрый день! Помогите, пожалуйста, составить программу на паскале. Необходимо матрицу смежности...

Матрица инцидентности из матрицы смежности
Я вот сделал матриицу смежности: #define _CRT_SECURE_N0_WARNINGS #include &lt;stdio.h&gt; #include...

Задание 1, граф-матрица смежности и инцидентности
Всем доброго времени суток! решил задание номер 1! проверьте меня пожалуйста Задание - Описать...

Матрица инцидентности из матрицы смежности для орграфа
Привет. Возникла ошибка при написании кода для преобразования матрицы смежности в матрицу...

Построение графов по матрице смежности и матрица инцидентности
Помогите пожалуйста написать программу... Построение графов по матрице смежности и матрица...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru