Counter MachinesA counter machine may be thought of in one of two ways dịch - Counter MachinesA counter machine may be thought of in one of two ways Việt làm thế nào để nói

Counter MachinesA counter machine m

Counter Machines
A counter machine may be thought of in one of two ways:
The counter machine has the same structure as the multistack machine (Fig. 8.20), but in place of each stack is a counter. Counters hold any nonnegative integer, but we can only distinguish between zero and nonzero counters. That is, the move of the counter machine depends on its state, input symbol, and which, if any, of the counters are zero. In one move, the counter machine can:
Change state.
Add or subtract 1 from any of its counters, independently. However, a counter is not allowed to become negative, so it cannot subtract 1 from a counter that is currently 0.
A counter machine may also be regarded as a restricted multistack ma¬chine. The restrictions are as follows:
There are only two stack symbols, which we shall refer to as ZQ (the bottom-of-stack marker), and A'.
ZQ is initially on each stack.
We may replace ZQ only by a string of the form X'Z0, for some i > 0.
We may replace X only by X' for some i > 0. That is, ZQ appears only on the bottom of each stack, and all other stack symbols, if any, are X.
Wre shall use definition (1) for counter machines, but the two definitions clearly define machines of equivalent power. The reason is that stack XlZ0 can be identified with the count i. In definition (2), we can tell count 0 from other counts, because for count 0 we see ZQ on top of the stack, and otherwise we see X. However, we cannot distinguish two positive counts, since both have X on top of the stack.
The Power of Counter Machines
There are a few observations about the languages accepted by counter machines that are obvious but worth stating:
Every language accepted by a counter machine is recursively enumerable. The reason is that a counter machine is a special case of a stack machine, and a stack machine is a special case of a multitape Turing machine, which accepts only recursively enumerable languages by Theorem 8.9.
Every language accepted by a one-counter machine is a CFL. Note that a counter, in point-of-view (2), is a stack, so a one-counter machine is a special case of a one-stack machine, i.e., a PDA. In fact, the languages of one-counter machines are accepted by deterministic PDA’s, although the proof is surprisingly complex. The difficulty in the proof stems from the fact that the multistack and counter machines have an endmarker $ at the end of their input. A nondeterministic PDA can guess that it has seen the last input symbol and is about to see the $; thus it is clear that a nondeterministic PDA without the endmarker can simulate a DPDA with the endmarker. However, the hard proof, which we shall not attack, is to show that a DPDA without the endmarker can simulate a DPDA with the endmarker.
The surprising result about counter machines is that two counters are enough to simulate a Turing machine and therefore to accept every recursively enumerable language. It is this result we address now, first showing that three counters are enough, and then simulating three counters by two counters.
Theorem 8.14: Every recursively enumerable language is accepted by a three- counter machine.
PROOF: Begin with Theorem 8.13, which says that every recursively enumer¬able language is accepted by a two-stack machine. We then need to show how to simulate a stack with counters. Suppose there are r — 1 tape symbols used by the stack machine. We may identify the symbols with the digits 1 through r — 1, and think of a stack X X2 ■ • • Xn as an integer in base r. That is, this stack (whose top is at the left end, as usual) is represented by the integer Xnrn~l + Xn-jr"" + • ■ • + Jfjr + Xj.
We use two counters to hold the integers that represent each of the two stacks. The third counter is used to adjust the other two counters. In particular, we need the third counter when we either divide or multiply a count by r.
The operations on a stack can be broken into three kinds: pop the top symbol, change the top symbol, and push a symbol onto the stack. A move of the two-stack machine may involve several of these operations; in particular, replacing the top stack symbol X by a string of symbols must be broken down into replacing X and then pushing additional symbols onto the stack. We perform these operations on a stack that is represented by a count i, as follows.
Note that it is possible to use the finite control of the multistack machine to do each of the operations that requires counting up to r or less.
To pop the stack, we must replace i by i/r, throwing away any remainder, which is X. Starting with the third counter at 0, we repeatedly reduce the count i by r, and increase the third counter by 1. When the counter that originally held i reaches 0, we stop. Then, we repeatedly increase the original counter by 1 and decrease the third counter by 1, until the third counter becomes 0 again. At this time, the counter that used to hold i holds i/r.
To change X to Y on the top of a stack that is represented by count i, we increment or decrement i by a small amount, surely no more than r. If Y > X, as digits, increment i by Y — X; if Y < X then decrement i by X-Y.
To push X onto a stack that initially holds i, we need to replace i by ir + X. We first multiply by r. To do so, repeatedly decrement the count
by 1 and increase the third counter (which starts from 0, as always), by r. When the original counter becomes 0, we have ir on the third counter. Copy the third counter to the original counter and make the third counter
again, as we did in item (1). Finally, we increment the original counter by X.
To complete the construction, we must initialize the counters to simulate the stacks in their initial condition: holding only the start symbol of the two-stack machine. This step is accomplished by incrementing the two counters involved to some small integer, whichever integer from 1 to r - 1 corresponds to the start symbol. □
Theorem 8.15: Every recursively enumerable language is accepted by a two- counter machine.
PROOF: With the previous theorem, we only have to show how to simulate three counters with two counters. The idea is to represent the three counters, say i, j, and k, by a single integer. The integer we choose is m = 2‘3i5fc. One counter will hold this number, while the other is used to help multiply or divide m by one of the first three primes: 2, 3, and 5. To simulate the three-counter machine, we need to perform the following operations:
Increment i, j, and/or k. To increment i by 1, we multiply m by 2. We already saw in the proof of Theorem 8.14 how to multiply a count by any constant r, using a second counter. Likewise, we increment j by multiplying m by 3, and we increment k by multiplying to by 5.
Choice of Constants in the 3-to-2 Counter Construction
Notice how important it is in the proof of Theorem 8.15 2, 3, and 5 are distinct primes. If we had chosen, say m = 2*3J4*, then m = 12 could represent either i = 0, j = 1, and fc — 1, or it could represent i = 2, j = 1, and k = 0. Thus, we could not tell whether i or k was 0, and thus could not simulate the 3-counter machine reliably.
m an even or odd number of times. If we have decremented m an odd number of times when it becomes 0, then i = 0. We then restore m by copying the second counter to the first. Similarly, we test if j = 0 by determining whether m is divisible by 3, and we test if k — 0 by determining whether m is divisible by 5.
Decrement i, j, and/or k. To do so, we divide m by 2, 3, or 5, respec¬tively. The proof of Theorem 8.14 tells us how to perform the division by any constant, using an extra counter. Since the 3-counter machine cannot decrease a count below 0, it is an error, and the simulating 2-counter ma¬chine halts without accepting, if m is not evenly divisible by the constant by which we are dividing
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Số lượt truy cập máyMột máy tính số lượt truy cập có thể được dùng ở một trong hai cách: Số lượt truy cập máy có cấu trúc tương tự như máy multistack (hình 8,20), nhưng ở vị trí của mỗi ngăn xếp là một truy cập. Quầy giữ vô số nguyên bất kỳ, nhưng chúng tôi chỉ có thể phân biệt giữa 0 và nonzero quầy. Có nghĩa là, việc di chuyển của máy truy cập phụ thuộc vào biểu tượng nhà nước, đầu vào, và, nếu có, của đồng hồ là zero. Trong một động thái, máy số lượt truy cập có thể: Thay đổi trạng thái. Thêm hoặc trừ 1 từ bất kỳ đồng hồ của nó một cách độc lập. Tuy nhiên, một số lượt truy cập không được cho phép để trở thành tiêu cực, do đó, nó không thể trừ 1 từ một số lượt truy cập hiện 0. Một máy tính số lượt truy cập cũng có thể được coi như là một ma¬chine multistack hạn chế. Các hạn chế là như sau: Có những chỉ có hai biểu tượng ngăn xếp, mà chúng tôi sẽ đề cập đến như là ZQ (đánh dấu dưới cùng của ngăn xếp), và A'. ZQ là ban đầu trên mỗi ngăn xếp. Chúng tôi có thể thay thế ZQ chỉ bởi một chuỗi các hình thức X'Z0, cho một số i > 0. Chúng tôi có thể thay thế X chỉ bởi X' cho một số i > 0. Có nghĩa là, ZQ chỉ xuất hiện trên dưới cùng của mỗi ngăn xếp, và tất cả các ký hiệu ngăn xếp khác, nếu có, là X.WRE sẽ sử dụng định nghĩa (1) để truy cập máy, nhưng hai định nghĩa rõ ràng xác định máy năng lượng tương đương. Lý do là xếp chồng đó XlZ0 có thể được xác định với mục tiêu tôi. Trong định nghĩa (2), chúng tôi có thể cho biết số 0 từ số lần khác, bởi vì cho số 0 chúng tôi xem ZQ trên đầu trang của ngăn xếp, và nếu không chúng tôi xem X. Tuy nhiên, chúng tôi không thể phân biệt hai điểm tích cực, kể từ khi cả hai đều có X trên đầu trang của ngăn xếp. Sức mạnh của số lượt truy cập máyCó là một vài quan sát về ngôn ngữ được chấp nhận bởi máy truy cập rõ ràng nhưng giá trị nói: Mỗi ngôn ngữ được chấp nhận bởi một máy tính số lượt truy cập là đệ quy enumerable. Lý do là một máy tính số lượt truy cập là một trường hợp đặc biệt của một máy ngăn xếp, và một máy ngăn xếp là một trường hợp đặc biệt của một máy Turing cứu chấp nhận chỉ đệ quy enumerable ngôn ngữ theo định lý 8.9. Mỗi ngôn ngữ được chấp nhận bởi một số lượt truy cập một máy là một CFL. Lưu ý rằng một số lượt truy cập, tại điểm của xem (2), là một chồng, vì vậy một số lượt truy cập một máy là một trường hợp đặc biệt của một máy tính một ngăn xếp, tức là, một PDA. Trong thực tế, ngôn ngữ của một số lượt truy cập máy được chấp nhận bởi xác định PDA của, mặc dù các bằng chứng là phức tạp đáng ngạc nhiên. Những khó khăn trong chứng minh bắt nguồn từ thực tế là các máy công cụ truy cập multistack có một endmarker $ vào đầu vào của họ. Một PDA nondeterministic có thể đoán rằng nó đã thấy biểu tượng đầu vào cuối và là về để xem $; Vì vậy, nó là rõ ràng rằng một PDA nondeterministic mà không có endmarker có thể mô phỏng một DPDA với endmarker. Tuy nhiên, bằng chứng khó khăn, chúng tôi sẽ không tấn công, là để hiển thị một DPDA mà không có endmarker có thể mô phỏng một DPDA với endmarker.Kết quả đáng ngạc nhiên về số lượt truy cập máy là hai đồng hồ là đủ để mô phỏng một máy Turing và do đó chấp nhận mọi ngôn ngữ enumerable đệ quy. Nó là kết quả này chúng tôi địa chỉ bây giờ, đầu tiên Hiển thị ba quầy là đủ, và sau đó mô phỏng ba quầy bởi hai quầy.Định lý 8.14: Mỗi đệ quy enumerable ngôn ngữ được chấp nhận bởi một máy tính truy cập ba.Bằng chứng: Bắt đầu với định lý 8.13, mà nói rằng mỗi đệ quy enumer¬able ngôn ngữ được chấp nhận bởi một máy hai ngăn xếp. Sau đó chúng tôi cần để hiển thị làm thế nào để mô phỏng một ngăn xếp với đồng hồ. Giả sử có r-1 băng biểu tượng được sử dụng bởi máy ngăn xếp. Chúng tôi có thể nhận biết các biểu tượng với các chữ số từ 1 thông qua r-1, và suy nghĩ của một ngăn xếp X X 2 ■ • • Xn là một số nguyên trong cơ sở r. Có nghĩa là, ngăn xếp này (đầu trang mà là ở phía bên trái, như bình thường) được đại diện bởi số nguyên Xnrn ~ l + Xn-jr "" + • ■ • + Jfjr + Xj.Chúng tôi sử dụng hai công tơ để giữ các số nguyên đại diện cho mỗi người trong số những ngăn xếp hai. Số lượt truy cập thứ ba được sử dụng để điều chỉnh hai đồng hồ. Đặc biệt, chúng tôi cần truy cập thứ ba khi chúng tôi chia hoặc nhân số một của r.Các hoạt động trên một ngăn xếp có thể được chia thành ba loại: bật biểu tượng hàng đầu, thay đổi biểu tượng hàng đầu, và đẩy một biểu tượng vào ngăn xếp. Một động thái của ngăn xếp hai máy có thể bao gồm một số các hoạt động này; đặc biệt, thay thế các biểu tượng đầu ngăn xếp X bởi một chuỗi các ký hiệu phải được chia thành thay thế X và sau đó đẩy các biểu tượng bổ sung vào ngăn xếp. Chúng tôi thực hiện các hoạt động trên một ngăn xếp đại diện bởi một số tôi, như sau.Lưu ý rằng nó là có thể sử dụng điều khiển hữu hạn của multistack máy để làm mỗi hoạt động đòi hỏi phải đếm để r hoặc ít hơn. Để bật ngăn xếp, chúng ta phải thay thế tôi bởi tôi / r, ném đi bất kỳ thời gian còn lại, mà là X. Bắt đầu với số lượt truy cập thứ ba tại 0, chúng tôi liên tục giảm số tôi bởi r, và tăng số lượt truy cập thứ ba bởi 1. Khi truy cập ban đầu tổ chức tôi đạt đến 0, chúng tôi dừng lại. Sau đó, chúng tôi liên tục tăng truy cập ban đầu bằng 1 và giảm số lượt truy cập thứ ba bởi 1, cho đến khi số lượt truy cập thứ ba trở thành 0 một lần nữa. Tại thời điểm này, truy cập sử dụng để giữ tôi giữ tôi / r. Để thay đổi X đến Y trên đỉnh một ngăn xếp đại diện bởi tính tôi, chúng tôi tăng hoặc giảm tôi bởi một số lượng nhỏ, chắc chắn không nhiều hơn r. Nếu Y > X, như chữ số, tăng tôi bởi Y-X; Nếu Y < X sau đó lượng tôi bởi X-Y. Để đẩy X vào một ngăn xếp ban đầu giữ tôi, chúng tôi cần phải thay thế tôi bởi ir + X. Chúng tôi lần đầu tiên nhân của r. Để làm như vậy, liên tục giảm số bởi 1 và tăng thứ ba truy cập (mà bắt đầu từ 0, như mọi khi), bởi r. Khi truy cập ban đầu sẽ trở thành 0, chúng tôi có hồng ngoại trên số lượt truy cập thứ ba. Sao chép số lượt truy cập thứ ba để truy cập ban đầu và làm cho số lượt truy cập thứ ba một lần nữa, như chúng tôi đã làm trong mục (1). Cuối cùng, chúng tôi tăng truy cập ban đầu bởi X.Để hoàn thành việc xây dựng, chúng tôi phải khởi tạo đồng hồ để mô phỏng những ngăn xếp trong tình trạng ban đầu của họ: nắm giữ chỉ là biểu tượng bắt đầu của máy hai ngăn xếp. Bước này được thực hiện bởi incrementing đồng hồ hai liên quan đến một số số nguyên nhỏ, cho dù số nguyên từ 1 đến r - 1 tương ứng với biểu tượng bắt đầu. □Định lý 8.15: Mỗi đệ quy enumerable ngôn ngữ được chấp nhận bởi một máy hai số lượt truy cập.Bằng chứng: Với định lý trước, chúng tôi chỉ có để hiển thị làm thế nào để mô phỏng các bộ đếm ba với hai quầy. Mục đích là để đại diện cho các quầy ba, nói tôi, j và k, bởi một số nguyên đơn. Số nguyên chúng tôi chọn là m = 2' 3i5fc. Số lượt truy cập một sẽ giữ số này, trong khi khác được sử dụng để giúp nhân hoặc chia m bởi một trong các số nguyên tố đầu tiên ba: 2, 3 và 5. để mô phỏng máy tính truy cập ba, chúng ta cần phải thực hiện các thao tác sau: Tăng tôi, j và k. Để tăng tôi bằng 1, chúng tôi nhân m 2. Chúng tôi đã thấy trong giấy tờ chứng minh định lý 8.14 làm thế nào để nhân số một của bất kỳ r liên tục, sử dụng một số lượt truy cập thứ hai. Tương tự như vậy, chúng tôi tăng j bằng cách nhân m 3, và chúng tôi tăng k bằng cách nhân đến 5. Sự lựa chọn của các hằng số trong việc xây dựng số lượt truy cập 3-2Thông báo như thế nào quan trọng là trong chứng minh định lý 8.15 2, 3 và 5 là số nguyên tố khác biệt. Nếu chúng tôi đã chọn, nói m = 2 * 3J4 *, sau đó m = 12 có thể đại diện cho một trong hai i = 0, j = 1, và fc-1, hoặc nó có thể đại diện cho tôi = 2, j = 1, và k = 0. Vì vậy, chúng tôi không có thể nói cho dù tôi hoặc k là 0, và do đó có thể không mô phỏng máy 3 số lượt truy cập đáng tin cậy.m một số thậm chí hay lẻ lần. Nếu chúng tôi có sai m một số lẻ lần khi nó trở thành 0, sau đó tôi = 0. Sau đó chúng tôi khôi phục m bằng cách sao chép số lượt truy cập thứ hai để là người đầu tiên. Tương tự như vậy, chúng tôi kiểm tra nếu j = 0 bằng cách xác định cho dù m là số chia hết cho 3, và chúng tôi kiểm tra nếu k-0 bằng cách xác định cho dù m là số chia hết cho 5. Giảm tôi, j và k. Để làm như vậy, chúng tôi chia m 2, 3, hoặc 5, respec¬tively. Chứng minh định lý 8.14 cho chúng ta biết làm thế nào để thực hiện việc phân chia bởi bất kỳ liên tục, sử dụng một số lượt truy cập phụ. Kể từ khi máy 3 số lượt truy cập không thể giảm một số dưới 0, đó là một lỗi, và ma¬chine số lượt truy cập 2 mô phỏng halts mà không chấp nhận, nếu m không đồng đều chia hết cho hằng số mà chúng tôi phân chia
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Counter Machines
A counter machine may be thought of in one of two ways:
The counter machine has the same structure as the multistack machine (Fig. 8.20), but in place of each stack is a counter. Counters hold any nonnegative integer, but we can only distinguish between zero and nonzero counters. That is, the move of the counter machine depends on its state, input symbol, and which, if any, of the counters are zero. In one move, the counter machine can:
Change state.
Add or subtract 1 from any of its counters, independently. However, a counter is not allowed to become negative, so it cannot subtract 1 from a counter that is currently 0.
A counter machine may also be regarded as a restricted multistack ma¬chine. The restrictions are as follows:
There are only two stack symbols, which we shall refer to as ZQ (the bottom-of-stack marker), and A'.
ZQ is initially on each stack.
We may replace ZQ only by a string of the form X'Z0, for some i > 0.
We may replace X only by X' for some i > 0. That is, ZQ appears only on the bottom of each stack, and all other stack symbols, if any, are X.
Wre shall use definition (1) for counter machines, but the two definitions clearly define machines of equivalent power. The reason is that stack XlZ0 can be identified with the count i. In definition (2), we can tell count 0 from other counts, because for count 0 we see ZQ on top of the stack, and otherwise we see X. However, we cannot distinguish two positive counts, since both have X on top of the stack.
The Power of Counter Machines
There are a few observations about the languages accepted by counter machines that are obvious but worth stating:
Every language accepted by a counter machine is recursively enumerable. The reason is that a counter machine is a special case of a stack machine, and a stack machine is a special case of a multitape Turing machine, which accepts only recursively enumerable languages by Theorem 8.9.
Every language accepted by a one-counter machine is a CFL. Note that a counter, in point-of-view (2), is a stack, so a one-counter machine is a special case of a one-stack machine, i.e., a PDA. In fact, the languages of one-counter machines are accepted by deterministic PDA’s, although the proof is surprisingly complex. The difficulty in the proof stems from the fact that the multistack and counter machines have an endmarker $ at the end of their input. A nondeterministic PDA can guess that it has seen the last input symbol and is about to see the $; thus it is clear that a nondeterministic PDA without the endmarker can simulate a DPDA with the endmarker. However, the hard proof, which we shall not attack, is to show that a DPDA without the endmarker can simulate a DPDA with the endmarker.
The surprising result about counter machines is that two counters are enough to simulate a Turing machine and therefore to accept every recursively enumerable language. It is this result we address now, first showing that three counters are enough, and then simulating three counters by two counters.
Theorem 8.14: Every recursively enumerable language is accepted by a three- counter machine.
PROOF: Begin with Theorem 8.13, which says that every recursively enumer¬able language is accepted by a two-stack machine. We then need to show how to simulate a stack with counters. Suppose there are r — 1 tape symbols used by the stack machine. We may identify the symbols with the digits 1 through r — 1, and think of a stack X X2 ■ • • Xn as an integer in base r. That is, this stack (whose top is at the left end, as usual) is represented by the integer Xnrn~l + Xn-jr"" + • ■ • + Jfjr + Xj.
We use two counters to hold the integers that represent each of the two stacks. The third counter is used to adjust the other two counters. In particular, we need the third counter when we either divide or multiply a count by r.
The operations on a stack can be broken into three kinds: pop the top symbol, change the top symbol, and push a symbol onto the stack. A move of the two-stack machine may involve several of these operations; in particular, replacing the top stack symbol X by a string of symbols must be broken down into replacing X and then pushing additional symbols onto the stack. We perform these operations on a stack that is represented by a count i, as follows.
Note that it is possible to use the finite control of the multistack machine to do each of the operations that requires counting up to r or less.
To pop the stack, we must replace i by i/r, throwing away any remainder, which is X. Starting with the third counter at 0, we repeatedly reduce the count i by r, and increase the third counter by 1. When the counter that originally held i reaches 0, we stop. Then, we repeatedly increase the original counter by 1 and decrease the third counter by 1, until the third counter becomes 0 again. At this time, the counter that used to hold i holds i/r.
To change X to Y on the top of a stack that is represented by count i, we increment or decrement i by a small amount, surely no more than r. If Y > X, as digits, increment i by Y — X; if Y < X then decrement i by X-Y.
To push X onto a stack that initially holds i, we need to replace i by ir + X. We first multiply by r. To do so, repeatedly decrement the count
by 1 and increase the third counter (which starts from 0, as always), by r. When the original counter becomes 0, we have ir on the third counter. Copy the third counter to the original counter and make the third counter
again, as we did in item (1). Finally, we increment the original counter by X.
To complete the construction, we must initialize the counters to simulate the stacks in their initial condition: holding only the start symbol of the two-stack machine. This step is accomplished by incrementing the two counters involved to some small integer, whichever integer from 1 to r - 1 corresponds to the start symbol. □
Theorem 8.15: Every recursively enumerable language is accepted by a two- counter machine.
PROOF: With the previous theorem, we only have to show how to simulate three counters with two counters. The idea is to represent the three counters, say i, j, and k, by a single integer. The integer we choose is m = 2‘3i5fc. One counter will hold this number, while the other is used to help multiply or divide m by one of the first three primes: 2, 3, and 5. To simulate the three-counter machine, we need to perform the following operations:
Increment i, j, and/or k. To increment i by 1, we multiply m by 2. We already saw in the proof of Theorem 8.14 how to multiply a count by any constant r, using a second counter. Likewise, we increment j by multiplying m by 3, and we increment k by multiplying to by 5.
Choice of Constants in the 3-to-2 Counter Construction
Notice how important it is in the proof of Theorem 8.15 2, 3, and 5 are distinct primes. If we had chosen, say m = 2*3J4*, then m = 12 could represent either i = 0, j = 1, and fc — 1, or it could represent i = 2, j = 1, and k = 0. Thus, we could not tell whether i or k was 0, and thus could not simulate the 3-counter machine reliably.
m an even or odd number of times. If we have decremented m an odd number of times when it becomes 0, then i = 0. We then restore m by copying the second counter to the first. Similarly, we test if j = 0 by determining whether m is divisible by 3, and we test if k — 0 by determining whether m is divisible by 5.
Decrement i, j, and/or k. To do so, we divide m by 2, 3, or 5, respec¬tively. The proof of Theorem 8.14 tells us how to perform the division by any constant, using an extra counter. Since the 3-counter machine cannot decrease a count below 0, it is an error, and the simulating 2-counter ma¬chine halts without accepting, if m is not evenly divisible by the constant by which we are dividing
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: