0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 19
1

Проверить бинарную матрицу на негатранзитивность

20.05.2011, 10:16. Показов 3366. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
подскажите как проверить бинарную матрицу на негатранзитивность
0
20.05.2011, 10:16
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2011, 10:16
Ответы с готовыми решениями:

Как записать в файл бинарную матрицу
Имеется бинарная матрица созданная из ЛЧМ сигнала типа x_cos = chirp(tch_lf,f_begin,tch2,f_end); Матрица создана так: x_bit_cos =...

Проверить, может ли массив представлять бинарную кучу
Задан массив из N чисел. Необходимо проверить, может ли он представлять бинарную кучу.

Проверить матрицу на ортоганальность
Всем привет=) Вот такое задание есть: "Проверить матрицу ортоганальная ли она (с помощью функций), то есть скалярные произведения каждого...

3
0 / 0 / 1
Регистрация: 24.12.2010
Сообщений: 20
21.05.2011, 01:30 2
У меня есть похожая тема. Свойства бинарных отношений. Только написано на с++

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
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <fstream>
#include <locale.h>
#include <math.h>
using namespace std;
 
//перегрузка функции
void Display(int A[],int k, int m[4][4]);
void Display(int A[],int k, int** m);
 
// сортировка 
 void SortMas(int a[], long N){
    long i = 0, k = N;
    int temp;
    bool flag = 0;
 
    while (flag != true){
        flag = true;
        for (i=0; i < k-1; i++){
            if (a[i] > a[i+1]){
                temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
                flag = false;
            } 
        }
    }
}
 
// cоздание множества 
void  MakeSet(int m[], int k, int n){
    int i, j;
    srand(time(0));
    for ( i = 0; i < k; i++){
        m[i] = rand()%n+1;
        int j = 0;
        while (j < i){
            if (m[i] == m[j]){
                m[i] = rand()%n+1;
                j=-1;        
            }       
            j++;
        }
    }
}
 
 
 //Вывoд на экран  
 void Display(int A[],int k, int** m){
      //output of set
      cout<<"\n\n";
      cout<<"                |";
      for (int i = 0; i < k; i++){
            cout.width(3);
            cout<<A[i]<<" |";
      }
      
      //print line
      cout<<"\n";
      cout<<"            ";
      for(int i = 0; i < k+1; i++){
            cout<<"-----";
      }
      cout<<"\n";
      
      //print array
      for (int i = 0; i < k; i++){
            cout<<"           ";
            cout.width(4);
            cout<<A[i]<<" |";
            for (int j = 0; j < k; j++){
                    cout.width(3);
                    cout<<m[i][j]<<" |";;
            }
                    
            if(i < k-1){
                cout<<"\n"; 
                cout<<"            ";
                for(int i = 0; i < k+1; i++) {
                    cout<<"-----";
                }
            }
            cout<<"\n"; 
       } 
      
      //print line 
      cout<<"            "; 
      for(int i = 0; i < k+1; i++){
            cout<<"-----";
      }
}
 
 
void Display(int A[],int k, int m[4][4]){
      //output of set
      cout<<"\n\n";
      cout<<"                |";
      for (int i = 0; i < k; i++){
            cout.width(3);
            cout<<A[i]<<" |";
      }
      
      //print line
      cout<<"\n";
      cout<<"            ";
      for(int i = 0; i < k+1; i++){
            cout<<"-----";
      }
      cout<<"\n";
      
      //print array
      for (int i = 0; i < k; i++){
            cout<<"           ";
            cout.width(4);
            cout<<A[i]<<" |";
            for (int j = 0; j < k; j++){
                    cout.width(3);
                    cout<<m[i][j]<<" |";;
            }
                    
            if(i < k-1){
                cout<<"\n"; 
                cout<<"            ";
                for(int i = 0; i < k+1; i++) {
                    cout<<"-----";
                }
            }
            cout<<"\n"; 
       } 
      
      //print line 
      cout<<"            "; 
      for(int i = 0; i < k+1; i++){
            cout<<"-----";
      }
}
 
// проверка на рефлексивность
int ref (int m[4][4], int k){
    int q;
    for (int i = 0; i<k; i++){
            if (m[i][i]==0){  //если на диагонали есть 0 - нет
                q=0;
                break;
            }
            else q=1; //иначе - рефлексивно
        }
    return q;
}
 
//проверка на антирефлексивность
int antiref (int m[4][4], int k){
    int q;
    for (int i = 0; i<k; i++){
            if (m[i][i]==1){ //если на диагонали есть 0 - нет
                q=0; 
                break;
            }
            else q=1; // иначе антирефлексивно
    }
    return q;
}
 
//проверка на симметричность
int sym (int m[4][4], int k){
    int q=0;
    for (int i = 0; i<k; i++){
        for (int j = 0; j<k; j++){
            if (m[i][j]==m[j][i] && m[i][j]==1 && m[j][i]==1 && i != j) q++;
        }
    }
    if (q>0) return 1; //возвращает 1 если есть симметрия и 
        else return 0;
}
 
//проверка антисимметричности
int antisym (int m[4][4], int k){
    int q;
    for (int i = 0; i<k; i++){
        for (int j = 0; j<k; j++){
            if ((m[i][j]==m[j][i]==1 && i==j) || (m[i][j]==0 && i!=j) || (m[i][j]!=m[j][i]))  q=1;
        //если отношение выполняется как для а и в так и обратно то только на диагонали, антитогда симметрично
        //иначе нет
            else {
                q=0;
                break;
            }
        }
        if (q==0) break;
    }
    return q;
}
 
//проверка ТРАНЗИТИВНОСТИ
//РЕАЛИЗОВАНО С ИСПОЛЬЗОВАНИЕМ АЛГОРИТМА УОРШЕЛЛА - ФЛОЙДА
int trans (int a[4][4], int k){
    int mat[4][4];
    int q=0;
    
    //копируем матрицу истинности в mat[4][4]
    for (int i = 0; i<4; i++)
            for (int j = 0; j<4; j++)
                        mat[i][j]=a[i][j];
 
    //алгоритм Уоршелла - Флойда. Выполняет транзитивное замыкание 
    // отношения заданного матрицей истинности mat[4][4]        
    for (int l = 0; l<k; l++)               
        for (int i = 0; i<k; i++)
            for (int j = 0; j<k; j++)
                mat[i][j] = (mat[i][j] || (mat[i][l] && mat[l][j]));
                
    //Выполним сравнение mat[4][4] и а[4][4]
    //если они равны, отношение  а[4][4] транзитивно, иначе - нет.
    for (int i = 0; i<4; i++)
            for (int j = 0; j<4; j++){
                        if (mat[i][j] == a[i][j]) q=1;
                        else {
                            q=0;
                            return q;}
            }
return 1;      
}
 
int main (){
    srand(time(0));
    int key;
    int i;
    int Na;
    do{
        system("cls");
        cout<<"\n";
        cout<<"        Please, input size set A --> ";
        cin>>Na;
    }while (Na<1 || Na>10);
    
    int *A = new int[Na];//выделение памяти для множества А
    
    int **M = new int *[Na]; //выделение памяти для матрицы истинности 
    for (int i = 0; i<Na; i++){
        M[i] = new int [Na];
        }
    
    int M2[4][4] = {
        1, 1, 0, 0,
        1, 1, 0, 0,
        0, 0, 1, 0,
        0, 0, 0, 1
    };
    
    int A2[4] = {1, 2, 3, 4}; 
        
    MakeSet(A,Na,15);// создание множества А    
    SortMas(A,Na); // сортировка множества А
    do {
        
        system("cls");
        cout<<"\n\n\n";
        cout<<"                    MENU: \n"; 
        cout<<"   1) Output the matrix of truth for the relationship antisymmetry... \n";
        cout<<"   2) Output the matrix of truth for the relationship transitivity... \n";
        cout<<"   3) Check the properties of relations... \n";
        cout<<"   If you want to EXIT input 0\n";
        cout<<"   Please make your choice. --> ";
        
        cin>>key; 
      //  putchar (key); 
 
    
        switch (key){
               case 1:{
                    system("cls");
                    cout<<"\n   DEMO of antisymmetry relation:  R = ((b >= a) && (a+b)^2 % 3 != 0) ? 1 : 0";
                    for (int i = 0; i<Na; i++){
                        for (int j = 0; j<Na; j++){
                            M[i][j] = ( (A[j] >=  A[i]) && (A[i]+A[j])*(A[i]+A[j]) % 3 != 0)? 1:0; 
                        }
                    }
                    Display(A,Na,M);
                    cout<<"\n\n   Press any key!> ";
                    getch();
                    break;
                    }
               case 2:{
                    system("cls");
                      cout<<"\n                                        .";
                    cout<<"\n   DEMO of transitivity relation:  R = A:B ? 1 : 0";
                    for (int i = 0; i<Na; i++){
                        for (int j = 0; j<Na; j++){
                            M[i][j] = ( A[i] % A[j]  == 0 )? 1:0; 
                        }
                    }
                    Display(A,Na,M);
                    cout<<"\n\n  Press any key!> ";
                    getch();
                    break;
                    }
               case 3:{
                    system("cls");
                    cout<<"\n  Check the properties of relation R(A)={{1,1},{1,2},{2,1},{2,2},{3,3},{4,4}}:";
                        Display(A2,4,M2);
                        cout<<"\n This relation is: ";
                        
                        if (ref(M2,4)) cout<<"\n    -reflexive";
                        
                        if (antiref(M2,4)) cout<<"\n    -antireflexive";
                        
                        if ((ref(M2,4) + antiref(M2,4))==0) cout<<"\n    -not refleksive not antirefleksive";
                        
                        if (sym(M2,4)) cout<<"\n    -symmetric";
                        
                        if (antisym(M2,4)) cout<<"\n    -antisymmetric";
                        
                        if (trans(M2,4)) cout<<"\n    -transitive";
                            else cout<<"\n    -not transitive";
                        
                        cout<<"\n\n   Press any key!> ";
                        getch();
                        break;
                    }        
               }
      
             
        } while (key != 0) ;
        delete []A;   
        for (int i = 0; i<Na; i++){
           delete[] M[i];
        }     
        delete[] M;       
    return 0;
    }
0
1 / 1 / 0
Регистрация: 21.05.2011
Сообщений: 7
21.05.2011, 15:05 3
мм, полезно, спасибо
0
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 19
23.05.2011, 14:10  [ТС] 4
Viskas2011, ну тут я вижу проверку на транзитивность,а как проверить негатранзитивность?
0
23.05.2011, 14:10
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.05.2011, 14:10
Помогаю со студенческими работами здесь

Проверить и перестроить матрицу
Помогите пожалуйста решить задачу. Написать программу. Граф задан матрицей инцеденции. Определить является ли он антисимметричным или...

Проверить матрицу на выполнения условия
Проверить матрицу на выполнения условия AT = -A Помогите, пожалуйста. Не знаю как сделать

Как проверить матрицу на единичность?
Здравствуйте, такое дело, как сделать проверку матрицы на единичную??? Ищу уже неделю никак не могу найти, наброски есть но мне кажется что...

Проверить матрицу на рефлексивность, симметричность и транзитивность
Ошибка: массив имеет другое количество размерностей Задание: проверить матрицу на рефлексивность, симметричность и транзитивность ...

Как проверить матрицу на одинаковые элементы
Программа работает с динамической матрицей. Есть вопрос: как при вводе пользователем с клавиатуры эл-тов массива контролировать на...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией и Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru