mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2025-05-06 11:32:59 +00:00
graph
This commit is contained in:
parent
9a74a01bdf
commit
5a9abe4084
46
Esiur.Analysis.Test/FGraph.Designer.cs
generated
Normal file
46
Esiur.Analysis.Test/FGraph.Designer.cs
generated
Normal file
@ -0,0 +1,46 @@
|
||||
namespace Esiur.Analysis.Test
|
||||
{
|
||||
partial class FGraph
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// FGraph
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(838, 494);
|
||||
this.Name = "FGraph";
|
||||
this.Text = "FGraph";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
20
Esiur.Analysis.Test/FGraph.cs
Normal file
20
Esiur.Analysis.Test/FGraph.cs
Normal file
@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Esiur.Analysis.Test
|
||||
{
|
||||
public partial class FGraph : Form
|
||||
{
|
||||
public FGraph()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
60
Esiur.Analysis.Test/FGraph.resx
Normal file
60
Esiur.Analysis.Test/FGraph.resx
Normal file
@ -0,0 +1,60 @@
|
||||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
@ -1,4 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.1</TargetFramework>
|
||||
|
15
Esiur.Analysis/Graph/DirectedGraph.cs
Normal file
15
Esiur.Analysis/Graph/DirectedGraph.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Esiur.Analysis.Graph
|
||||
{
|
||||
public class DirectedGraph <T>: IGraph
|
||||
{
|
||||
public Node<T>[] Nodes { get; set; }
|
||||
public Edge<T>[] Edges { get; set; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
12
Esiur.Analysis/Graph/Edge.cs
Normal file
12
Esiur.Analysis/Graph/Edge.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Esiur.Analysis.Graph
|
||||
{
|
||||
public class Edge<T>
|
||||
{
|
||||
public T SourceNode { get; set; }
|
||||
public T DestinationNode { get; set; }
|
||||
}
|
||||
}
|
10
Esiur.Analysis/Graph/IGraph.cs
Normal file
10
Esiur.Analysis/Graph/IGraph.cs
Normal file
@ -0,0 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Esiur.Analysis.Graph
|
||||
{
|
||||
public interface IGraph
|
||||
{
|
||||
}
|
||||
}
|
14
Esiur.Analysis/Graph/Node.cs
Normal file
14
Esiur.Analysis/Graph/Node.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Esiur.Analysis.Graph
|
||||
{
|
||||
public class Node<T>
|
||||
{
|
||||
public T Value { get; set; }
|
||||
|
||||
public int X { get; set; }
|
||||
public int Y { get; set; }
|
||||
}
|
||||
}
|
47
Esiur.Analysis/Graph/TransitionMatrix.cs
Normal file
47
Esiur.Analysis/Graph/TransitionMatrix.cs
Normal file
@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection.Metadata.Ecma335;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
||||
namespace Esiur.Analysis.Graph
|
||||
{
|
||||
public class Matrix<T> where T : struct
|
||||
{
|
||||
internal T[,] value;
|
||||
|
||||
public int Rows => value.GetLength(0);
|
||||
public int Columns => value.GetLength(1);
|
||||
|
||||
public T this[int x, int y] => value[x, y];
|
||||
|
||||
public Matrix(T[,] value)
|
||||
{
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public static Matrix<T> Multiply<T>(Matrix<T> a, Matrix<T> b) where T:struct
|
||||
{
|
||||
|
||||
|
||||
if (a.Columns != b.Rows)
|
||||
throw new ArgumentException("`a` rows do not match `b` columns.");
|
||||
|
||||
|
||||
T[,] rt = new T[a.Rows, b.Columns];
|
||||
|
||||
for (int i = 0; i < a.Rows; i++)
|
||||
{ // aRow
|
||||
for (int j = 0; j < b.Columns; j++)
|
||||
{ // bColumn
|
||||
for (int k = 0; k < a.Columns; k++)
|
||||
{ // aColumn
|
||||
rt[i, j] += a[i, k] * b[k, j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new Matrix<T>(rt);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user