Skip to main content

Graph

Struct Graph 

Source
pub struct Graph { /* private fields */ }
Expand description

Qo’shnilik ro’yxati (adjacency list) asosidagi graf.

Tugunlar 0..n butun sonlar bilan raqamlanadi. Nomlar bilan ishlash kerak bo’lsa, HashMap<String, usize> orqali nomni indeksga bog’lang.

§Misol

use rust_algorithms::graph::Graph;

// yo'naltirilmagan, og'irlikli graf
let mut g = Graph::new_undirected(4);
g.add_edge(0, 1, 5);
g.add_edge(0, 2, 2);
g.add_edge(2, 3, 1);

assert_eq!(g.node_count(), 4);
assert_eq!(g.edge_count(), 3);
assert_eq!(g.degree(0), 2);
assert!(g.has_edge(1, 0)); // yo'naltirilmagan — ikki tomonlama

Implementations§

Source§

impl Graph

Source

pub fn new_undirected(n: usize) -> Self

n tugunli yo’naltirilmagan graf (qirra ikki tomonga ham ishlaydi).

Source

pub fn new_directed(n: usize) -> Self

n tugunli yo’naltirilgan graf (qirra faqat bir tomonga).

Source

pub fn add_edge(&mut self, from: usize, to: usize, weight: i64)

Og’irlikli qirra qo’shadi.

§Panics

from yoki to tugun sonidan katta bo’lsa.

Source

pub fn add_unweighted_edge(&mut self, from: usize, to: usize)

Og’irliksiz qirra (og’irligi 1).

Source

pub fn neighbors(&self, node: usize) -> &[Edge]

Tugunning qo’shnilari.

Source

pub fn has_edge(&self, from: usize, to: usize) -> bool

from → to qirra bormi?

Source

pub fn degree(&self, node: usize) -> usize

Tugunning darajasi (chiquvchi qirralar soni).

Source

pub fn node_count(&self) -> usize

Tugunlar soni.

Source

pub fn edge_count(&self) -> usize

Qirralar soni (yo’naltirilmaganda juftlik bir marta sanaladi).

Source

pub fn is_directed(&self) -> bool

Graf yo’naltirilganmi?

Source

pub fn all_edges(&self) -> Vec<(usize, usize, i64)>

Barcha qirralar (from, to, weight) ko’rinishida. Yo’naltirilmagan grafda har juftlik bir marta (from < to) qaytadi.

Source

pub fn reversed(&self) -> Graph

Qirralar yo’nalishi teskari qilingan yangi graf (yo’naltirilgan graflar uchun).

Kosaraju algoritmi va “kim menga bog’liq?” tipidagi savollarda kerak.

Trait Implementations§

Source§

impl Clone for Graph

Source§

fn clone(&self) -> Graph

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Graph

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Graph

§

impl RefUnwindSafe for Graph

§

impl Send for Graph

§

impl Sync for Graph

§

impl Unpin for Graph

§

impl UnsafeUnpin for Graph

§

impl UnwindSafe for Graph

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.