We are searching data for your request:
Upon completion, a link will appear to access the found materials.
Network data are defined by actors and by relations (or "nodes" and "edges"). Other empirical approaches in the social sciences also think in terms of cases or subjects or sample elements and the like. There is one difference with most network data, however, that makes a big difference in how such data are usually collected -- and the kinds of samples and populations that are studied.
Network analysis focuses on the relations among actors, and not individual actors and their attributes. This means that the actors are usually not sampled independently, as in many other kinds of studies (most typically, surveys). Suppose we are studying friendship ties, for example. John has been selected to be in our sample. When we ask him, John identifies seven friends. We need to track down each of those seven friends and ask them about their friendship ties, as well. The seven friends are in our sample because John is (and vice-versa), so the "sample elements" are no longer "independent."
The nodes or actors included in non-network studies tend to be the result of independent probability sampling. Network studies are much more likely to include all of the actors who occur within some (usually naturally occurring) boundary. Often network studies don't use "samples" at all, at least in the conventional sense. Rather, they tend to include all of the actors in some population or populations. Of course, the populations included in a network study may be a sample of some larger set of populations. For example, when we study patterns of interaction among students in a classrooms, we include all of the children in a classroom (that is, we study the whole population of the classroom). The classroom itself, though, might have been selected by probability methods from a population of classrooms (say all of those in a school).
The use of whole populations as a way of selecting observations in (many) network studies makes it important for the analyst to be clear about the boundaries of each population to be studied, and how individual units of observation are to be selected within that population. Network data sets also frequently involve several levels of analysis, with actors embedded at the lowest level (i.e. network designs can be described using the language of "nested" designs).
Populations, samples, and boundaries
Social network analysts rarely draw samples in their work. Most commonly, network analysts will identify some population and conduct a census (i.e. include all elements of the population as units of observation). A network analyst might examine all of the nouns and objects occurring in a text, all of the persons at a birthday party, all members of a kinship group, of an organization, neighborhood, or social class (e.g. landowners in a region, or royalty).
Survey research methods usually use a quite different approach to deciding which nodes to study. A list is made of all nodes (sometimes stratified or clustered), and individual elements are selected by probability methods. The logic of the method treats each individual as a separate "replication" that is, in a sense, interchangeable with any other.
Because network methods focus on relations among actors, actors cannot be sampled independently to be included as observations. If one actor happens to be selected, then we must also include all other actors to whom our ego has (or could have) ties. As a result, network approaches tend to study whole populations by means of census, rather than by sample (we will discuss a number of exceptions to this shortly, under the topic of sampling ties).
The populations that network analysts study are remarkably diverse. At one extreme, they might consist of symbols in texts or sounds in verbalizations; at the other extreme, nations in the world system of states might constitute the population of nodes. Perhaps most common, of course, are populations of individual persons. In each case, however, the elements of the population to be studied are defined by falling within some boundary.
The boundaries of the populations studied by network analysts are of two main types. Probably most commonly, the boundaries are those imposed or created by the actors themselves. All the members of a classroom, organization, club, neighborhood, or community can constitute a population. These are naturally occurring clusters, or networks. So, in a sense, social network studies often draw the boundaries around a population that is known, a priori, to be a network. Alternatively, a network analyst might take a more "demographic" or "ecological" approach to defining population boundaries. We might draw observations by contacting all of the people who are found in a bounded spatial area, or who meet some criterion (having gross family incomes over $1,000,000 per year). Here, we might have reason to suspect that networks exist, but the entity being studied is an abstract aggregation imposed by the investigator -- rather than a pattern of institutionalized social action that has been identified and labeled by its participants.
Network analysts can expand the boundaries of their studies by replicating populations. Rather than studying one neighborhood, we can study several. This type of design (which could use sampling methods to select populations) allows for replication and for testing of hypotheses by comparing populations. A second, and equally important way that network studies expand their scope is by the inclusion of multiple levels of analysis, or modalities.
Modality and levels of analysis
The network analyst tends to see individual people nested within networks of face-to-face relations with other persons. Often these networks of interpersonal relations become "social facts" and take on a life of their own. A family, for example, is a network of close relations among a set of people. But this particular network has been institutionalized and given a name and reality beyond that of its component nodes. Individuals in their work relations may be seen as nested within organizations; in their leisure relations they may be nested in voluntary associations. Neighborhoods, communities, and even societies are, to varying degrees, social entities in and of themselves. And, as social entities, they may form ties with the individuals nested within them, and with other social entities.
Often network data sets describe the nodes and relations among nodes for a single bounded population. If I study the friendship patterns among students in a classroom, I am doing a study of this type. But a classroom exists within a school - which might be thought of as a network relating classes and other actors (principals, administrators, librarians, etc.). And most schools exist within school districts, which can be thought of as networks of schools and other actors (school boards, research wings, purchasing and personnel departments, etc.). There may even be patterns of ties among school districts (say by the exchange of students, teachers, curricular materials, etc.).
Most social network analysts think of individual persons as being embedded in networks that are embedded in networks that are embedded in networks. Network analysts describe such structures as "multi-modal." In our school example, individual students and teachers form one mode, classrooms a second, schools a third, and so on. A data set that contains information about two types of social entities (say persons and organizations) is a two mode network.
Of course, this kind of view of the nature of social structures is not unique to social network analystst. Statistical analysts deal with the same issues as "hierarchical" or "nested" designs. Theorists speak of the macro-meso-micro levels of analysis, or develop schema for identifying levels of analysis (individual, group, organization, community, institution, society, global order being perhaps the most commonly used system in sociology). One advantage of network thinking and method is that it naturally predisposes the analyst to focus on multiple levels of analysis simultaneously. That is, the network analyst is always interested in how the individual is embedded within a structure and how the structure emerges from the micro-relations between individual parts. The ability of network methods to map such multi-modal relations is, at least potentially, a step forward in rigor.
Having claimed that social network methods are particularly well suited for dealing with multiple levels of analysis and multi-modal data structures, it must immediately be admitted that social network analysis rarely actually takes much advantage. Most network analyses does move us beyond simple micro or macro reductionism -- and this is good. Few, if any, data sets and analyses, however, have attempted to work at more than two modes simultaneously. And, even when working with two modes, the most common strategy is to examine them more or less separately (one exception to this is the conjoint analysis of two mode networks). In chapter 17, we'll take a look at some methods for multi-mode networks.
And one more solution, combinatorial: The problem is equivalent to the number of possible pairs of nodes in the graph, i.e.:
you have n - nodes, each have n -1 connections (each is connected to every node except itself), so we get n*(n-1) . However, because connection (x,y) and (y,x) is the same (for all connections), we end up with n*(n-1)/2 .
Sorry for the bad nomenclature, I'm a physicists, not a CS/Math guy.
Every single node (of which there are n ) has to be connected to every one else. There are (n-1) "every one else".
So each n nodes have n-1 connections coming out of them. n(n-1)
But since each connection is "bidirectional" (a to b = b to a) , you end up with a factor of 1/2
Proof by induction. Base case - for 2 nodes there is 1 connection and 2 * 1 / 2 == 1 . Now assuming that for N nodes we have N * (N-1) / 2 connections. Adding one more node has to establish N additional connections, and:
This last line is exactly N * (N - 1) / 2 with N replaced with N+1 , so the proof is good.
The degree of each vertex is n-1 (because it has n-1 neighbors).
Handshaking lemma, says: Sigma(deg(v)) (for each node) = 2|E| . Thus:
for 2 node: n-1 connections(already first node connected )
for 3 node: n-2 connections .. for n node: n-(n-1) connections
Therefore total connections = n + n-1 + n-2 + . 1
The most appropriate answer to determine the maximum number of links possible from N network nodes is.
The total number of possible combinations/connections where a link requires 2 nodes so:
where N>1 as it takes 2 nodes to have a Link.
Late and not a proof, but you could "visualize" the nodes as coordinates and relationships as cells in a matrix I don't know how to draw something here.
One column per node, one line per node, the cell at the cross is the relation.
You have xx possible cells. But you need to remove the topleft-bottomright diagonal cells (a node can node be linked to itself). Thus, you remove x cells and have only (xx-x) = x*(x-1) remaining cells. Then, the cell (x,y) is the same link as the cell (y,x), thus you can remove half of the remaining cells : x*(x-1)/2
is also done with the subscript and superscript operators:
However if you try this using the previous template, you’ll get something slightly different that looks like . To deal with this problem, we will segue into talking about display math mode, which is a feature that you will use very frequently anyway.
As you may have already noticed, the way that the course nodes are laid out, sometimes we put mathematical LaTeX inside the middle of a paragraph like this but sometimes we make a separate, centred paragraph that stands alone like this:
The first kind of typesetting is called inline and the second kind is called display typesetting. As a rule of thumb, inline typesetting is used to cause minimal disturbance to the flow of the text, while display is used to explicitly emphasize and distinguish a piece of text from its surroundings. (It’s not limited to math, for example these notes use multiple styles of source code too.)
Whereas LaTeX uses $single dollar signs$ to contain inline math, it uses $double dollar signs$ to contain display math. Here’s an example showing both kinds of displays: the source code
- Number Sequence: define a number sequence based on three inputs: start, amount and step. This sequence represents the &apost&apos in the parametric equation, so we want to use a list that&aposs large enough to define a spiral.
The step above has created a list of numbers to define the parametric domain. The golden spiral is defined as the equation: = and =. The group of Nodes below represent this equation in visual programming form.
- Number Slider: Add two number sliders to the canvas. These sliders will represent the a and the b variables of the parametric equation. These represent a constant which is flexible, or parameters which we can adjust towards a desired outcome.
- * : The multiplication Node is represented by an asterisk. We&aposll use this repeatedly to connect multiplying variables
- Math.RadiansToDegrees: The &apost&apos values need to be translated to degrees for their evaluation in the trigonometric functions. Remember, Dynamo defaults to degrees for evaluating these functions.
- Math.Pow: as a function of the &apost&apos and the number &apose&apos this creates the Fibonacci sequence.
- Math.Cos and Math.Sin: These two trigonmetric functions will differentiate the x-coordinate and the y-coordinate, respectively, of each parametric point.
- Watch: We now see that our output is two lists, these will be the x and y coordinates of the points used to generate the spiral.
From Formula to Geometry
Now, the bulk of Nodes from the previous step will work fine, but it is a lot of work. To create a more efficient workflow, have a look at Code Blocks (section 22.214.171.124) to define a string of Dynamo expressions into one node. In this next series of steps, we&aposll look at using the parametric equation to draw the Fibonacci spiral.
- Point.ByCoordinates: Connect the upper multiplication node into the &aposx&apos input and the lower into the &aposy&apos input. We now see a parametric spiral of points on the screen.
- Polycurve.ByPoints: Connect Point.ByCoordinates from the previous step into points. We can leave connectLastToFirst without an input because we aren&apost making a closed curve. This creates a spiral which passes through each point defined in the previous step.
We&aposve now completed the Fibonacci Spiral! Let&aposs take this further into two separate exercises from here, which we&aposll call the Nautilus and the Sunflower. These are abstractions of natural systems, but the two different applications of the Fibonacci spiral will be well represented.
From Spiral to Nautilus
- As a jumping-off point, let&aposs start with the same step from the previous exercise: creating a spiral array of points with the Point.ByCoordinates Node.
- Polycurve.ByPoints: Again, this is the Node from the pervious exercise, which we&aposll use as a reference.
- Circle.ByCenterPointRadius: We&aposll use a circle Node here with the same inputs as the previous step. The radius value defaults to 1.0, so we see an immediate output of circles. It becomes immediately legible how the points diverge further from the origin.
- Circle.ByCenterPointRadius: To create a more dynamic array of circles, we plug the original number sequence (the &apost&apos sequence) into the radius value.
- Number Sequence: This is the original array of &apost&apos. By plugging this into the radius value, the circle centers are still diverging further from the origin, but the radius of the circles is increasing, creating a funky Fibonacci circle graph. Bonus points if you make it 3D!
From Nautilus to Phyllotaxis Pattern
Now that we&aposve made a circular Nautilus shell, let&aposs jump into parametric grids. We&aposre going to use a basic rotate on the Fibonacci Spiral to create a Fibonacci grid, and the result is modeled after the growth of sunflower seeds.
- Again, as a jumping-off point, let&aposs start with the same step from the previous exercise: creating a spiral array of points with the Point.ByCoordinates Node.
- Geometry.Rotate: There are several Geometry.Rotate options be certain you&aposve chosen the Node with geometry,basePlane, and degrees as its inputs. Connect Point.ByCoordinates into the geometry input.
- Plane.XY: Connect to the basePlane input. We will rotate around the origin, which is the same location as the base of the spiral.
- Number Range: For our degree input, we want to create multiple rotations. We can do this quickly with a Number Range component. Connect this into the degrees input.
- Number: And to define the range of numbers, add three number nodes to the canvas in vertical order. From top to bottom, assign values of 0.0,360.0, and 120.0 respectively. These are driving the rotation of the spiral. Notice the output results from the Number Range node after connecting the three number nodes to the Node.
Our output is beginning to resemble a whirlpool. Let&aposs adjust some of the Number Range parameters and see how the results change:
1.2: Nodes - Mathematics
A math expressions parser. We mean by mathematical that, e.g., arithmetic operations is considered for example if you pass 1+2 , the result will be a node with type operator and name + with two children nodes of type number in its args property. Just play with expressions, log the result and see the different situations.
npm install @scicave/math-parser
The parse function returns a Node , which may have array of other Node s in its args .
If the Node is either id or function it maybe a builtin.
This method can check all properties except args , it will be ignored.
You can check for type directly here, but why not node.type === "the_type" ? Because "the_type" is not a valid type, .checkType will throw if you passed invalid type.
This method can check for any of args with properties props . It doesn't check for args , it will be ignored.
The same as hasChild , but recursively.
Available values for Node.prototype.type .
Array of literal strings: Node.types.values .
All Valid operators: Node.types.operators .
When invalid options passed, mathParser.OptionsError is thrown.
Type = boolean , default: true .
To perform multiplication in these cases:
Notice: sinxcosx when singleCharName is false will be a variable name
Type = boolean , default: true .
Maths conventionally works with single char named variables and constants, but in programming languages you have freedom. The convention in programming is to use multi-char named identifier. See: options.builtinIDs.
When a member expression is found, properties and methods are allowed to be multi-char, despite of options.singleCharName , see: options.extra.memberExpressions .
You can use a1 , a2 , etc. as single-char names.
All extra features are enabled.
- memberExpressions , for example:
- f(x).someProperty.fn(y).result : valid syntax in both cases of singleCharName .
- . etc, and so on.
- (-.5, infinity)
- (-pi, 1]
You can use ellipsis as valid Factor , e.g., 1 + 2 + . + 10
This expression will throw syntax error, 1 + 2 + (. ) + 10
extra.ellipsis is more customizable:
Intervals, should have 2 terms as math expression:
- (. a] : throw syntax error
- (. a) : is a tuple, parsed if extra.ellipsis is true
- [. a] : is a matrix, parsed if extra.matrices is true
Type = Array<string> , default = 
When autoMult is true , some expression like f(x) will be considered as multiplication f*(x) , in order to parse it as a function with name = "f", you can pass options.functions = ['f'] .
When singleCharName == true , you should pass single-char functions.
When parsing a.method(. ) , regardless of singleCharName , method names will be always multi-char name.
Type = Array<string> , default = ["infinity", "pi", "phi"]
If you want to expand the defaults put ". " as the first item in the array, at index 0 , for example:
To use multi-char names when setting singleCharName to true, for example:
Math Expression Equivalent To singleCharName 1 + pix 1 + p*i*x true 1 + xpi 1 + x*p*i true 1 + x pi 1 + x*pi true 1 + pi 1 + pi true 1 + pi x 1 + pi*x false 1 + pix 1 + pix false
- primary : can be used like sinx and logx .
- secondary : has to be used with parenthesis, exp(pi) and arcoth(1.2^2) . The secondary builtin functions could be passed throw options.functions, but let them be here to avoid putting them redundantly in options.functions .
If you want to expand the defaults put ". " as the first item in the array, at index 0 .
Notice, when singleCharName == true , all primary and secondary has to be used with parenthesis "(. )", sinx is considered as node with type "id" and name "sinx" .
Type = boolean , default = false .
If you want to make grouping parenthesis nodes in the result AST, < type: 'parenthesis', . >.
In these confusing cases, you can handle the parsed expression to transform to what you want.
5^2x! To be 5^(2x!) or (5^2)(x!) or (5^2x)! , . The current result AST is equivalent to 5^(2(x!)) .
x!y I am not sure whether parse as (x!)(y) or to throw a SyntaxError . Now it is parsed with no errors.
The Arclets problem set in September 2002 produced some very interesting and inspiring work from Madras College. This short article gives a flavour of the way that Sheila, Shona, Alison Colvin, Sarah, Kathryn and Gordan tackled the problem.
Each of the following shapes is made from arcs of a circle of radius r.
What is the perimeter of a shape with $3$, $4$, $5$ and $n$ "nodes".
What happens when $n$ is very large?
Explain the relationship between your answers and the perimeter of the original circle
Here are arclets with $3$, $4$ and $5$ nodes:
The angles at the centre of the inner circle are $60^
So the angles at the centre of the outer circles are $120^
$ and $240^ $ ($120^ +240^ = 360^ $.
We can therefore divide each circle into a $1/3$ ($120^
$ out of $360^ $) part and a $2/3$ ($240^ $ out of $360^ $) part.
The perimeter of the arclet is made up of 3 "inward" arcs of $1/3$ of the circumference and 3 "outward" arcs of $2/3$ of the circumference.
For the 4 node arclets the angles at the centre are $90^
The inward arcs are $1/4$ of the circumference ($90^
$ - there are 4 inward arcs.
The outward arcs are $1/2$ of the circumference (4 lots of $45^
$ - there are 4 outward arcs.
Because the inner circle is surrounded by five outer circles there are 5 angles - all of $72^
$ at the centre.
Using the properties of isoseles triangles the outward arcs are $2/5$ of the circumference and the inward arcs are $1/5$ of the circumference.
An image of part of the work Sarah, Kathryn and Gordon did to find the perimeter of the 5-node arclet is shown below
Scanned diagrams showing the work of Sheila, Shona and Alison to find the perimeter of a 6-node arclet:
Finding the perimeter of the N - node arclet
We know that these are the equations for the perimeter of 3, 4, 5 and 6 node arclets:
If we substitute $N$ for the node number we get (in every case):
This is based on the fact that the angles at the centres of the circles will be $1/N$ of a full turn.
If $N$ is very large the node shape begins to look like a circle:
In other words. No matter how many nodes the perimeter will always be 3 circumferences.
Shortest Path Between Specified Nodes
Create and plot a directed graph.
Calculate the shortest path between nodes 7 and 8.
Shortest Path in Weighted Graph
Create and plot a graph with weighted edges.
Find the shortest path between nodes 3 and 8, and specify two outputs to also return the length of the path.
Since the edges in the center of the graph have large weights, the shortest path between nodes 3 and 8 goes around the boundary of the graph where the edge weights are smallest. This path has a total length of 4.
Shortest Path Ignoring Edge Weights
Create and plot a graph with weighted edges, using custom node coordinates.
Find the shortest path between nodes 6 and 8 based on the graph edge weights. Highlight this path in green.
Specify Method as unweighted to ignore the edge weights, instead treating all edges as if they had a weight of 1. This method produces a different path between the nodes, one that previously had too large of a path length to be the shortest path. Highlight this path in red.
Shortest Path in Multigraph
Plot the shortest path between two nodes in a multigraph and highlight the specific edges that are traversed.
Create a weighted multigraph with five nodes. Several pairs of nodes have more than one edge between them. Plot the graph for reference.
Find the shortest path between node 1 and node 5. Since several of the node pairs have more than one edge between them, specify three outputs to shortestpath to return the specific edges that the shortest path traverses.
The results indicate that the shortest path has a total length of 11 and follows the edges given by G.Edges(edgepath,:) .
Highlight this edge path by using the highlight function with the 'Edges' name-value pair to specify the indices of the edges traversed.
Shortest Path from Node Coordinates
Find the shortest path between nodes in a graph using the distance between the nodes as the edge weights.
Create a graph with 10 nodes.
Create x- and y- coordinates for the graph nodes. Then plot the graph using the node coordinates by specifying the 'XData' and 'YData' name-value pairs.
Add edge weights to the graph by computing the Euclidean distances between the graph nodes. The distance is calculated from the node coordinates ( x i , y i ) as:
d = | Δ x | 2 + | Δ y | 2 = | x s - x t | 2 + | y s - y t | 2 .
To calculate Δ x and Δ y , first use findedges to obtain vectors sn and tn describing the source and target nodes of each edge in the graph. Then use sn and tn to index into the x - and y -coordinate vectors and calculate Δ x = x s - x t and Δ y = y s - y t . The hypot function computes the squareroot of the sum of squares, so specify Δ x and Δ y as the input arguments to calculate the length of each edge.
Add the distances to the graph as the edge weights and replot the graph with the edges labeled.
Calculate the shortest path between node 1 and node 10 and specify two outputs to also return the path length. For weighted graphs, shortestpath automatically uses the 'positive' method which considers the edge weights.
1.2: Nodes - Mathematics
is an ortholattice $mathbf =langle L,vee,0,wedge,1,' angle$ such that
the orthomodular law holds: $xle y implies xvee(x'wedge y)=y$.
This law is equivalent to satisfying the identity $xvee(x'wedge (xvee y))=xvee y$.
$ and $mathbf $ be orthomodular lattices. A morphism from $mathbf $ to $mathbf $ is a function $h:L ightarrow M$ that is a homomorphism:
Example 1: The closed subspaces of (countably dimensional) Hilbert Space form an orthomodular lattice that is not modular (for finite dimensional vector spaces all subspaces are closed, hence the lattice of closed subspaces is modular).
Example 2: The smallest nonmodular orthomodular lattice has 10 elements and is isomorphic to a parallel sum of a 4-element Boolean algebra and an 8-element Boolean algebra. A failure of the modular law $xvee(ywedge(xvee z))=(xvee y)wedge(xvee z)$ occurs when $x$, $z$ are atoms of the 8-element algebra and $y$ is an atom of the 4-element algebra.
Lagrange interpolation formula
A formula for obtaining a polynomial of degree $ n $( the Lagrange interpolation polynomial) that interpolates a given function $ f ( x) $ at nodes $ x _ <0>dots x _
When the $ x _ $ are equidistant, that is, $ x _ <1>- x _ <0>= dots = x _
- x _ 1 = h $, using the notation $ ( x - x _ <0>) / h = t $ one can reduce (1) to the form
$ ag <2 >L _
( x) = L _ ( x _ <0>+ th ) = ( - 1 ) ^ frac dots ( t- n ) > imes $
$ imes sum _ < i= >0 ^ < n >( - 1 ) ^ left ( egin
n i end ight ) frac ) > i . $
In the expression (2), called the Lagrange interpolation formula for equidistant nodes, the coefficients
of the $ f ( x _ ) $ are called the Lagrange coefficients.
If $ f $ has a derivative of order $ n+ 1 $ on the interval $ [ a , b ] $, if all interpolation nodes lie in this interval and if for any point $ x in [ a , b ] $ one defines
$ alpha _
= min < x _ <0>dots x _ , x > , eta _ = max < x _ <0>dots x _ , x > , $
then a point $ xi in [ alpha _
, eta _ ] $ exists such that
$ f ( x) - L _
( x) = frac ( xi ) omega _ ( x) > <( n+ 1) ! >, $
$ omega _
( x) = prod _ < j= >0 ^ < n >( x - x _ ) . $
If the absolute value of the derivative $ f ^ < ( n+ 1 ) >$ is bounded on $ [ a , b ] $ by a constant $ M $ and if the interpolation nodes are chosen such that the roots of the Chebyshev polynomial of degree $ n+ 1 $ are mapped into these points under a linear mapping from $ [ - 1 , 1] $ onto $ [ a , b ] $, then for any $ x in [ a , b ] $ one has
If the interpolation nodes are complex numbers $ z _ <0>dots z _
$ and lie in some domain $ G $ bounded by a piecewise-smooth contour $ gamma $, and if $ f $ is a single-valued analytic function defined on the closure of $ G $, then the Lagrange interpolation formula has the form
The Lagrange interpolation formula for interpolation by means of trigonometric polynomials is:
which is a trigonometric polynomial of order $ n $ having prescribed values $ y _ <0>dots y _
$ at the given nodes $ x _ <0>dots x _ $.
G — Input graph graph object
Input graph, specified as a graph object. Use graph to create an undirected graph object.
Example: G = graph(1,2)
NodeIDs — Node identifiers node indices | node names
Node identifiers, specified as one or more node indices or node names.
This table shows the different ways to refer to one or more nodes either by their numeric node indices or by their node names.
Example: [1 2 3]
Cell array of character vectors
Example: ["A" "B" "C"]
Example: D = degree(G,[3 4])
Example: D = degree(G,<'LAX','ALB'>)
Watch the video: Wire Training Course - Nodes (July 2022).