{"id":1231,"date":"2025-10-09T02:32:40","date_gmt":"2025-10-09T02:32:40","guid":{"rendered":"https:\/\/seateklab.vn\/?p=1231"},"modified":"2025-10-09T02:32:40","modified_gmt":"2025-10-09T02:32:40","slug":"algorithms-01-dynamic-programming-on-graphs","status":"publish","type":"post","link":"https:\/\/seateklab.vn\/en\/2025\/10\/09\/algorithms-01-dynamic-programming-on-graphs\/","title":{"rendered":"Algorithms 01: Dynamic Programming on Graphs"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">B\u00e0i vi\u1ebft n\u00e0y h\u1ec7 th\u1ed1ng l\u1ea1i b\u1ea3n ch\u1ea5t c\u1ee7a Dynamic Programming khi \u00e1p d\u1ee5ng tr\u00ean c\u1ea5u tr\u00fac \u0111\u1ed3 th\u1ecb (graph). T\u00f4i tr\u00ecnh b\u00e0y theo t\u1eebng m\u1ee5c r\u00f5 r\u00e0ng nh\u1eb1m gi\u00fap ng\u01b0\u1eddi \u0111\u1ecdc hi\u1ec3u tr\u1ecdng t\u00e2m v\u00e0 c\u00e1ch ti\u1ebfp c\u1eadn \u2014 \u0111\u1eb7c bi\u1ec7t ph\u00f9 h\u1ee3p cho ng\u01b0\u1eddi m\u1edbi h\u1ecdc ho\u1eb7c mu\u1ed1n \u00f4n l\u1ea1i kh\u00e1i ni\u1ec7m.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/seateklab.vn\/wp-content\/uploads\/2025\/10\/image.png\" alt=\"\" class=\"wp-image-1232\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">1. \u00dd t\u01b0\u1edfng c\u1ed1t l\u00f5i (Core Idea)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Trong c\u00e1c b\u00e0i to\u00e1n DP c\u1ed5 \u0111i\u1ec3n (v\u00ed d\u1ee5: Fibonacci, Knapsack), c\u00e1c tr\u1ea1ng th\u00e1i th\u01b0\u1eddng c\u00f3 th\u1ee9 t\u1ef1 t\u1ef1 nhi\u00ean t\u1eeb 1 \u0111\u1ebfn n. Tr\u00ean \u0111\u1ed3 th\u1ecb, m\u1ed1i quan h\u1ec7 ph\u1ee5 thu\u1ed9c gi\u1eefa c\u00e1c \u0111\u1ec9nh (nodes) kh\u00f4ng c\u00f3 th\u1ee9 t\u1ef1 c\u1ed1 \u0111\u1ecbnh, do \u0111\u00f3 c\u1ea7n x\u00e1c \u0111\u1ecbnh m\u1ed9t th\u1ee9 t\u1ef1 t\u00ednh to\u00e1n ph\u00f9 h\u1ee3p \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o c\u00e1c ph\u1ee5 thu\u1ed9c \u0111\u01b0\u1ee3c th\u1ecfa m\u00e3n tr\u01b0\u1edbc khi t\u00ednh gi\u00e1 tr\u1ecb c\u1ee7a m\u1ed9t \u0111\u1ec9nh.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Topological order<\/strong>&nbsp;l\u00e0 th\u1ee9 t\u1ef1 c\u00e1c \u0111\u1ec9nh c\u1ee7a m\u1ed9t \u0111\u1ed3 th\u1ecb c\u00f3 h\u01b0\u1edbng sao cho n\u1ebfu t\u1ed3n t\u1ea1i c\u1ea1nh u \u2192 v th\u00ec u xu\u1ea5t hi\u1ec7n tr\u01b0\u1edbc v. N\u1ebfu \u0111\u1ed3 th\u1ecb l\u00e0 DAG (Directed Acyclic Graph), ta c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n topological sort v\u00e0 d\u00f9ng th\u1ee9 t\u1ef1 n\u00e0y \u0111\u1ec3 l\u00e0m DP m\u1ed9t c\u00e1ch an to\u00e0n. N\u1ebfu \u0111\u1ed3 th\u1ecb c\u00f3 chu tr\u00ecnh (cycle), topological sort kh\u00f4ng kh\u1ea3 d\u1ee5ng; trong tr\u01b0\u1eddng h\u1ee3p \u0111\u00f3 ta s\u1eed d\u1ee5ng c\u00e1c k\u1ef9 thu\u1eadt kh\u00e1c nh\u01b0 DFS k\u1ebft h\u1ee3p memoization ho\u1eb7c thu\u1eadt to\u00e1n l\u1eb7p relax ki\u1ec3u Bellman\u2013Ford \/ Floyd\u2013Warshall cho t\u1edbi khi c\u00e1c gi\u00e1 tr\u1ecb h\u1ed9i t\u1ee5.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">V\u00ed d\u1ee5 minh ho\u1ea1: \u0111\u1ec3 t\u00ednh gi\u00e1 tr\u1ecb c\u1ee7a \u0111\u1ec9nh 4 (gi\u1ea3 s\u1eed gi\u00e1 tr\u1ecb l\u00e0 t\u1ed5ng \u0111\u01b0\u1eddng \u0111i t\u1eeb 1 \u0111\u1ebfn 4), ta c\u1ea7n tr\u01b0\u1edbc k\u1ebft qu\u1ea3 c\u1ee7a c\u00e1c \u0111\u1ec9nh 2 v\u00e0 3; \u0111\u1ec3 c\u00f3 2 v\u00e0 3 ta ph\u1ea3i c\u00f3 k\u1ebft qu\u1ea3 c\u1ee7a 1. V\u00ec v\u1eady c\u1ea7n s\u1eafp x\u1ebfp th\u1ee9 t\u1ef1 sao cho m\u1ed7i \u0111\u1ec9nh \u0111\u01b0\u1ee3c t\u00ednh sau c\u00e1c \u0111\u1ec9nh m\u00e0 n\u00f3 ph\u1ee5 thu\u1ed9c.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cho v\u00ed d\u1ee5 topo = [1, 2, 3, 4], ta s\u1ebd t\u00ednh nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dp&#91;1] = base\ndp&#91;2] = f(dp&#91;1])\ndp&#91;3] = f(dp&#91;1])\ndp&#91;4] = f(dp&#91;2], dp&#91;3])<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nh\u01b0 v\u1eady th\u1ee9 t\u1ef1 t\u00ednh to\u00e1n lu\u00f4n \u0111\u1ea3m b\u1ea3o c\u00e1c ph\u1ee5 thu\u1ed9c \u0111\u00e3 c\u00f3 gi\u00e1 tr\u1ecb.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. V\u00ed d\u1ee5: Longest Path tr\u00ean DAG<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">B\u00e0i to\u00e1n: v\u1edbi n \u0111\u1ec9nh v\u00e0 t\u1eadp c\u1ea1nh, t\u00ecm \u0111\u1ed9 d\u00e0i \u0111\u01b0\u1eddng \u0111i d\u00e0i nh\u1ea5t tr\u00ean m\u1ed9t DAG. \u00dd t\u01b0\u1edfng: duy\u1ec7t c\u00e1c \u0111\u1ec9nh theo topological order v\u00e0 c\u1eadp nh\u1eadt gi\u00e1 tr\u1ecb cho c\u00e1c \u0111\u1ec9nh k\u1ec1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">V\u1edbi m\u1ed7i c\u1ea1nh u \u2192 v, th\u1ef1c hi\u1ec7n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dp&#91;v] = max(dp&#91;v], dp&#91;u] + 1)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pseudo code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>topo = topological_sort(graph)\ndp = &#91;0 for _ in range(n)]\nfor u in topo:\n    for v in graph&#91;u]:\n        dp&#91;v] = max(dp&#91;v], dp&#91;u] + 1)\nreturn max(dp)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0110\u1ed9 ph\u1ee9c t\u1ea1p th\u1eddi gian: O(V + E) n\u1ebfu \u0111\u00e3 c\u00f3 th\u1ee9 t\u1ef1 topo. Topo \u0111\u1ea3m b\u1ea3o kh\u00f4ng bao gi\u1edd c\u1eadp nh\u1eadt m\u1ed9t \u0111\u1ec9nh tr\u01b0\u1edbc khi c\u00e1c ti\u1ec1n \u0111\u1ec1 c\u1ee7a n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c x\u1eed l\u00fd.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Khi \u0111\u1ed3 th\u1ecb c\u00f3 chu tr\u00ecnh (When Graph Has Cycles)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">N\u1ebfu \u0111\u1ed3 th\u1ecb ch\u1ee9a chu tr\u00ecnh th\u00ec topological sort kh\u00f4ng kh\u1ea3 d\u1ee5ng. C\u00e1c ph\u01b0\u01a1ng \u00e1n thay th\u1ebf ph\u1ed5 bi\u1ebfn:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DFS + memoization:<\/strong>\u00a0d\u00f9ng DFS \u0111\u1ec3 t\u00ednh gi\u00e1 tr\u1ecb theo nhu c\u1ea7u, l\u01b0u k\u1ebft qu\u1ea3 (memo) \u0111\u1ec3 tr\u00e1nh t\u00ednh l\u1ea1i. V\u1edbi c\u00e1c b\u00e0i to\u00e1n y\u00eau c\u1ea7u \u0111\u01b0\u1eddng \u0111i d\u00e0i nh\u1ea5t tr\u00ean m\u1ed9t \u0111\u1ed3 th\u1ecb c\u00f3 chu tr\u00ecnh, c\u1ea7n x\u1eed l\u00fd chu tr\u00ecnh ph\u00f9 h\u1ee3p (v\u00ed d\u1ee5 ph\u00e1t hi\u1ec7n v\u00f4 h\u1ea1n ho\u1eb7c c\u1eaft chu tr\u00ecnh theo y\u00eau c\u1ea7u b\u00e0i to\u00e1n).<\/li>\n\n\n\n<li><strong>Bellman\u2013Ford \/ Floyd\u2013Warshall:<\/strong>\u00a0c\u00e1c thu\u1eadt to\u00e1n l\u1eb7p relax qua c\u00e1c c\u1ea1nh nhi\u1ec1u l\u1ea7n cho \u0111\u1ebfn khi c\u00e1c gi\u00e1 tr\u1ecb h\u1ed9i t\u1ee5 (ho\u1eb7c x\u00e1c \u0111\u1ecbnh t\u1ed3n t\u1ea1i chu tr\u00ecnh \u00e2m v\u1edbi Bellman\u2013Ford).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">DFS + memo pseudo code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def dfs(u):\n    if seen&#91;u]:\n        return dp&#91;u]\n    seen&#91;u] = True\n    dp&#91;u] = 1 + max(dfs(v) for v in graph&#91;u])\n    return dp&#91;u]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bellman\u2013Ford: l\u1eb7p qua t\u1ea5t c\u1ea3 c\u1ea1nh V-1 l\u1ea7n, m\u1ed7i l\u1ea7n th\u1ef1c hi\u1ec7n c\u1eadp nh\u1eadt ki\u1ec3u&nbsp;<code>dist[v] = min(dist[v], dist[u] + w)<\/code>. V\u1ec1 b\u1ea3n ch\u1ea5t \u0111\u00e2y l\u00e0 m\u1ed9t d\u1ea1ng DP l\u1eb7p (iterative relaxation) cho \u0111\u1ebfn khi c\u00e1c gi\u00e1 tr\u1ecb \u1ed5n \u0111\u1ecbnh.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. T\u01b0\u01a1ng t\u1ef1 trong th\u1ef1c t\u1ebf (Real-World Analogy)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e1c b\u00e0i to\u00e1n qu\u1ea3n l\u00fd ph\u1ee5 thu\u1ed9c trong th\u1ef1c t\u1ebf ph\u1ea3n \u00e1nh ch\u00ednh x\u00e1c t\u01b0 duy DP tr\u00ean \u0111\u1ed3 th\u1ecb:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Airflow DAG: m\u1ed9t task ch\u1ec9 ch\u1ea1y khi c\u00e1c task m\u00e0 n\u00f3 ph\u1ee5 thu\u1ed9c \u0111\u00e3 ho\u00e0n th\u00e0nh.<\/li>\n\n\n\n<li>Dependency graph c\u1ee7a tr\u00ecnh bi\u00ean d\u1ecbch: module A ph\u1ea3i \u0111\u01b0\u1ee3c compile tr\u01b0\u1edbc module B n\u1ebfu B ph\u1ee5 thu\u1ed9c A.<\/li>\n\n\n\n<li>Neural network forward pass: duy\u1ec7t theo th\u1ee9 t\u1ef1 topo c\u1ee7a computation graph \u0111\u1ec3 t\u00ednh gi\u00e1 tr\u1ecb c\u00e1c node.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Chung quy \u0111\u00e2y \u0111\u1ec1u l\u00e0 c\u00e1c b\u00e0i to\u00e1n&nbsp;<em>dependency resolution<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. K\u1ebft lu\u1eadn ch\u00ednh (Key Takeaways)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tr\u00ean DAG, \u01b0u ti\u00ean d\u00f9ng topo DP v\u1edbi \u0111\u1ed9 ph\u1ee9c t\u1ea1p O(V + E).<\/li>\n\n\n\n<li>N\u1ebfu \u0111\u1ed3 th\u1ecb c\u00f3 chu tr\u00ecnh, c\u00e2n nh\u1eafc d\u00f9ng DFS + memoization ho\u1eb7c thu\u1eadt to\u00e1n l\u1eb7p relax nh\u01b0 Bellman\u2013Ford.<\/li>\n\n\n\n<li>Tr\u1ecdng t\u00e2m kh\u00f4ng ph\u1ea3i c\u00f4ng th\u1ee9c; m\u00e0 l\u00e0 qu\u1ea3n l\u00fd lu\u1ed3ng th\u00f4ng tin (dependency) v\u00e0 th\u1ee9 t\u1ef1 t\u00ednh to\u00e1n.<\/li>\n\n\n\n<li>DP tr\u00ean \u0111\u1ed3 th\u1ecb = reuse (t\u00e1i s\u1eed d\u1ee5ng k\u1ebft qu\u1ea3) + ordering (s\u1eafp x\u1ebfp th\u1ee9 t\u1ef1) + dependency control (ki\u1ec3m so\u00e1t ph\u1ee5 thu\u1ed9c).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">6. B\u00e0i t\u1eadp li\u00ean quan (Related LeetCode Problems)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0110\u1ec3 luy\u1ec7n t\u1eadp, c\u00f3 th\u1ec3 tham kh\u1ea3o c\u00e1c b\u00e0i sau (t\u1eeb d\u1ec5 \u0111\u1ebfn trung b\u00ecnh\u2013kh\u00f3):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>207. Course Schedule \u2014 ph\u00e1t hi\u1ec7n chu tr\u00ecnh + topo sort<\/li>\n\n\n\n<li>210. Course Schedule II \u2014 x\u00e2y d\u1ef1ng topo order<\/li>\n\n\n\n<li>329. Longest Increasing Path in a Matrix \u2014 DP tr\u00ean graph \u1ea9n trong grid<\/li>\n\n\n\n<li>1514. Path with Maximum Probability \u2014 DP k\u1ebft h\u1ee3p Dijkstra<\/li>\n\n\n\n<li>787. Cheapest Flights Within K Stops \u2014 bi\u1ebfn th\u1ec3 c\u1ee7a Bellman\u2013Ford<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">7. Nh\u1eadn x\u00e9t c\u00e1 nh\u00e2n (Personal Reflection)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tr\u01b0\u1edbc \u0111\u00e2y t\u00f4i t\u1eebng hi\u1ec3u DP l\u00e0 t\u1eadp h\u1ee3p c\u00e1c c\u00f4ng th\u1ee9c chuy\u1ec3n tr\u1ea1ng th\u00e1i c\u1ee9ng nh\u1eafc. Sau khi ti\u1ebfp c\u1eadn s\u00e2u h\u01a1n, nh\u1eadn ra b\u1ea3n ch\u1ea5t c\u1ee7a DP l\u00e0 qu\u1ea3n l\u00fd lu\u1ed3ng th\u00f4ng tin trong m\u1ed9t m\u1ea1ng ph\u1ee5 thu\u1ed9c. \u0110\u1ed3 th\u1ecb ch\u1ec9 l\u00e0m cho kh\u00e1i ni\u1ec7m tr\u1eebu t\u01b0\u1ee3ng h\u01a1n, nh\u01b0ng nguy\u00ean l\u00fd v\u1eabn l\u00e0: t\u00ednh c\u00e1c ph\u1ea7n d\u1ec5 tr\u01b0\u1edbc, l\u01b0u k\u1ebft qu\u1ea3, r\u1ed3i s\u1eed d\u1ee5ng \u0111\u1ec3 t\u00ednh ph\u1ea7n ph\u1ee9c t\u1ea1p h\u01a1n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Khi n\u1eafm \u0111\u01b0\u1ee3c nguy\u00ean l\u00fd n\u00e0y, c\u00e1c thu\u1eadt to\u00e1n nh\u01b0 Bellman\u2013Ford, Floyd\u2013Warshall hay topo DP tr\u1edf n\u00ean tr\u1ef1c quan h\u01a1n. Th\u00f3i quen h\u1eefu \u00edch: v\u1ebd dependency graph tr\u01b0\u1edbc khi code v\u00e0 th\u1eed nghi\u1ec7m v\u1edbi v\u00ed d\u1ee5 nh\u1ecf (4\u20135 \u0111\u1ec9nh) \u0111\u1ec3 quan s\u00e1t th\u1ee9 t\u1ef1 v\u00e0 c\u00e1ch gi\u00e1 tr\u1ecb lan truy\u1ec1n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nguy\u00ean t\u1eafc th\u1ef1c h\u00e0nh:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Hi\u1ec3u lu\u1ed3ng t\u00ednh to\u00e1n (simulate flow) tr\u01b0\u1edbc khi tri\u1ec3n khai code \u2014 Understand > Memorize.<\/li>\n\n\n\n<li>DP = reuse + ordering + dependency management \u2014 t\u1eeb \u0111\u00f3 c\u00f3 th\u1ec3 t\u00e1i c\u1ea5u tr\u00fac thu\u1eadt to\u00e1n m\u00e0 kh\u00f4ng c\u1ea7n thu\u1ed9c l\u00f2ng c\u00f4ng th\u1ee9c.<\/li>\n\n\n\n<li>N\u1ebfu c\u00f3 chu tr\u00ecnh, kh\u00f4ng c\u1ed1 \u00e9p topo sort; chuy\u1ec3n sang ph\u01b0\u01a1ng ph\u00e1p c\u1eadp nh\u1eadt l\u1eb7p nh\u01b0 Bellman\u2013Ford v\u00e0 ti\u1ebfp t\u1ee5c relax cho t\u1edbi khi \u1ed5n \u0111\u1ecbnh.<\/li>\n\n\n\n<li>Lu\u00f4n x\u00e1c \u0111\u1ecbnh r\u00f5 \u201cai ph\u1ee5 thu\u1ed9c v\u00e0o ai\u201d \u2014 tr\u1ef1c quan ho\u00e1 gi\u00fap n\u1eafm nhanh dependency.<\/li>\n\n\n\n<li>B\u1eaft \u0111\u1ea7u t\u1eeb base case; suy ngh\u0129 theo h\u01b0\u1edbng ti\u1ebfn (past \u2192 future) ho\u1eb7c l\u00f9i (goal \u2192 start) tu\u1ef3 b\u00e0i to\u00e1n.<\/li>\n\n\n\n<li>N\u1ebfu th\u1ea5y t\u00ednh \u0111i t\u00ednh l\u1ea1i c\u00f9ng m\u1ed9t gi\u00e1 tr\u1ecb \u2014 d\u00f9ng memoization; ki\u1ec3m tra k\u1ef9 bi\u00ean (boundaries) v\u00e0 base case \u0111\u1ec3 tr\u00e1nh l\u1ed7i ph\u1ed5 bi\u1ebfn.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ghi ch\u00fa:<\/strong>&nbsp;\u0110\u00e2y l\u00e0 chia s\u1ebb t\u1eeb g\u00f3c nh\u00ecn ng\u01b0\u1eddi b\u1eaft \u0111\u1ea7u nh\u1eb1m gi\u00fap ng\u01b0\u1eddi h\u1ecdc h\u1ec7 th\u1ed1ng l\u1ea1i ki\u1ebfn th\u1ee9c. Vi\u1ec7c th\u1ef1c h\u00e0nh v\u00e0 gi\u1ea3i nhi\u1ec1u b\u00e0i s\u1ebd gi\u00fap n\u00e2ng c\u1ea5p kh\u1ea3 n\u0103ng l\u00e0m ch\u1ee7 c\u00e1c bi\u1ebfn th\u1ec3 n\u00e2ng cao h\u01a1n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>B\u00e0i vi\u1ebft n\u00e0y h\u1ec7 th\u1ed1ng l\u1ea1i b\u1ea3n ch\u1ea5t c\u1ee7a Dynamic Programming khi \u00e1p d\u1ee5ng tr\u00ean c\u1ea5u tr\u00fac \u0111\u1ed3 th\u1ecb (graph). T\u00f4i tr\u00ecnh b\u00e0y theo t\u1eebng m\u1ee5c r\u00f5 r\u00e0ng nh\u1eb1m gi\u00fap ng\u01b0\u1eddi \u0111\u1ecdc hi\u1ec3u tr\u1ecdng t\u00e2m v\u00e0 c\u00e1ch ti\u1ebfp c\u1eadn \u2014 \u0111\u1eb7c bi\u1ec7t ph\u00f9 h\u1ee3p cho ng\u01b0\u1eddi m\u1edbi h\u1ecdc ho\u1eb7c mu\u1ed1n \u00f4n l\u1ea1i kh\u00e1i ni\u1ec7m. 1. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-1231","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/seateklab.vn\/en\/wp-json\/wp\/v2\/posts\/1231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/seateklab.vn\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/seateklab.vn\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/seateklab.vn\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/seateklab.vn\/en\/wp-json\/wp\/v2\/comments?post=1231"}],"version-history":[{"count":0,"href":"https:\/\/seateklab.vn\/en\/wp-json\/wp\/v2\/posts\/1231\/revisions"}],"wp:attachment":[{"href":"https:\/\/seateklab.vn\/en\/wp-json\/wp\/v2\/media?parent=1231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/seateklab.vn\/en\/wp-json\/wp\/v2\/categories?post=1231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/seateklab.vn\/en\/wp-json\/wp\/v2\/tags?post=1231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}