单源最短路径(dijkstra算法)php实现 2.更新与i直接相邻顶点的dist值。(dist[j]=min{dist[j],dist[i]+cost[i][j]}) 3.知道U=V,停止。 利用php特有的性质,其代码如下:
做一个医学项目,其中在病例评分时会用到单源最短路径的算法。单源最短路径的dijkstra算法的思路如下:
如果存在一条从i到j的最短路径(Vi.....Vk,Vj),Vk是Vj前面的一顶点。那么(Vi...Vk)也必定是从i到k的最短路径。Dijkstra是以最短路径长度递增,逐次生成最短路径的算法。例如:对于源顶点V0,首先选择其直接相邻的顶点中长度最短的顶点Vi,那么当前已知可得从V0到达Vj顶点的最短距离dist[j]=min{dist[j],dist[i]+cost[i][j]}。假设G=
1.从V-U中选择使dist[i]值最小的顶点i,将i加入到U中;function dijkstra(){ $node_info_arr=array( //结点的邻接表结构 array( 'node_id'=>0, //某个结点的id 'next_node'=>array(4,2,1), 'node_type'=>0, 'cost'=>array(10,30,100) ), array( 'node_id'=>4, //某个结点的id 'next_node'=>array(3), 'node_type'=>1, 'cost'=>array(50) ), array( 'node_id'=>3, //某个结点的id 'next_node'=>array(1), 'node_type'=>1, 'cost'=>array(10) ), array( 'node_id'=>2, //某个结点的id 'next_node'=>array(3,1), 'node_type'=>1, 'cost'=>array(60,60) ), array( 'node_id'=>1, //某个结点的id 'next_node'=>array(), 'node_type'=>2, 'cost'=>array() ) ); $start_node_id=false; //起始结点id $i_cost=array(array()); //两个节点之间的开销 $i_dist=array(); //起始点到各点的最短距离 $b_mark=array(); //是否加入了 foreach($node_info_arr as &$node_info){ if($node_info['node_type']==0){ $start_node_id=$node_info['node_id']; //找到初始节点 } foreach($node_info['next_node'] as $key=>$next_node){ $i_cost[$node_info['node_id']][$next_node]=$node_info['cost'][$key]; } $i_dist[$node_info['node_id']]='INF'; //初始化为无穷大 $b_mark[$node_info['node_id']]=false; //初始化未加入 } if($start_node_id===false){ return '302'; } //计算初始结点到各节点的最短路径 $i_dist[$start_node_id]=0; //初始点到其本身的距离为0 $b_mark[$start_node_id]=true; //初始点加入集合 $current_node_id=$start_node_id; //最近加入的节点id $node_count=count($node_info_arr); for($i=0;$i$val){ if($i_dist[$key]=='INF'||$i_dist[$key]>$i_dist[$current_node_id]+$val){ $i_dist[$key]=$i_dist[$current_node_id]+$val; } } } foreach($i_dist as $key=>$val){ if(!$b_mark[$key]){ if($val!='INF'&&($min=='INF'||$min>$val)){ $min=$val; $candidate_node_id=$key; //候选最近结点id } } } if($min=='INF'){ break; } $current_node_id=$candidate_node_id; $b_mark[$current_node_id]=true; } foreach($i_dist as $key=>$val){ echo $start_node_id.'=>'.$key.':'.$val.'<br>'; }}
其中例子为图:
运行结果为:
0=>0:0
0=>4:10
0=>3:60
0=>2:30
0=>1:70
转自:康瑞的部落 ? 单源最短路径php实现

TooptimizephpCodeForreducedMemoryUseAndExecutionTime, folgt der THESESTEPS: 1) UseferencesInsteadofCopyingLargedatastructUrErestoreducemoryConbumption.2) Hebelverbotsversorgungsverbund

PhpisusedForSensionsemailsDuetoitSintegrationWithServerMailServicesandexternalsMtpproviders, automatisieren SieNotifikationen undmarketingCampaigns.1) setupyourphpenvironmentwithawebebascriccriptionWithPhpithPhPhPhPhPhPHPHPHPSMAILFUCTORISTION.2) useabasiscriccription

Der beste Weg, um E -Mails zu senden, besteht darin, die Phpmailer -Bibliothek zu verwenden. 1) Die Verwendung der Funktion mail () ist einfach, aber unzuverlässig, was dazu führen kann, dass E -Mails Spam eingeben oder nicht geliefert werden können. 2) Phpmailer bietet eine bessere Kontrolle und Zuverlässigkeit und unterstützt HTML -Mail-, Anhänge- und SMTP -Authentifizierung. 3) Stellen Sie sicher, dass die SMTP -Einstellungen korrekt konfiguriert sind und die Verschlüsselung (z. B. Starttls oder SSL/TLS) zur Verbesserung der Sicherheit verwendet wird. 4) Für große Mengen von E -Mails sollten Sie ein E -Mail -Warteschlangensystem verwenden, um die Leistung zu optimieren.

CustomHeaDersandadvancedFeaturesinphpemailenHanceFunctionality und Relance.1) CustomHeadersAddMetAforTrackingandCategorization.2) htmlemailSallowFormattingAndInteractivity.3) AttemmentmentsCanbesentusings -artig -Phpmailer.4) SMTPAUTHENTICTIVEMPR

Das Senden von E -Mails mit PHP und SMTP kann über die Phpmailer -Bibliothek erreicht werden. 1) Installieren und konfigurieren Sie Phpmailer, 2) Setzen Sie SMTP -Serverdetails, 3) Definieren Sie den E -Mail -Inhalt, 4) E -Mails senden und Fehler behandeln. Verwenden Sie diese Methode, um die Zuverlässigkeit und Sicherheit von E -Mails sicherzustellen.

ThebestApproachForSendingemailsinphpisusinusThephpmailerlibraryDuetoitSRective, merkeurichness, Anneaseofuse.phpmailersupportsSmtp, bietet DETAILEDErRORHANDLY, erlaubt, dass

Der Grund für die Verwendung der Abhängigkeitsinjektion (DI) ist, dass sie lose Kopplung, Testbarkeit und Wartbarkeit des Codes fördert. 1) Verwenden Sie den Konstruktor, um Abhängigkeiten zu injizieren.

PhpperformancetuningiscrucialBecauseitenhancesspeedandeffizienz, die sichvitalforewebapplications.1) CachingwithapcureducesDatabaseloadandimprovesresponSetimes.2 optimierenDatabasequeriesbyselekting -Antriebsanbietung und -Insusingsusing -INDUBUTUBUTUBEXINGEPEEDEPEEDEPEEDEPEEDEPEEDEPEEDEPEEDEPEDEPEED.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool
